C#的线程
线程
程序中独立的指令流,程序的执行路径
Thread t = new Thread();
t.Start();
IsBackground 表示是前台线程还是后台线程 false为前台线程,true为后台线程
前台线程全部结束,后台线程会强制结束
后台线程结束,前台线程会正常执行到结束
针对空的构造函数使用{}来初始化线程的状态:Running和Unstarted
当操作系统的线程调度器选择了要运行的线程,这个线程的状态才会从Unstarted修改为Running状态
Thread.Sleep() 当前线程休眠进入WaitSleepJoin状态
Thread对象的Join方法表示把Thread加入进来,暂停当前线程,并把它设置为WaitSleepJoin状态,直到加入的线程完成为止
线程池中的所有线程都是后台线程
//不能把入池的线程改为前台线程 不能给入池的线程设置优先级或名称 入池的线程只能用于时间较短的任务
ThreadPool.QueueUserWorkItem()把任务放进线程池执行的方式
任务
TaskFactory tf = new TaskFactory(); 第一种方法
Task t1 = tf.StartNew(Test);
Task t2 = new Task(Test); 第二种方法
t2.Start();
连续任务
Task t1 = new Task(FirstTest);
Task t2 = t1.ContinueWith(SecondTest); 当t1执行完执行下一个任务 里面的方法需要传递参数
Task t3 = t2.ContinueWith(ThreeTest);
竞态条件发生在多个线程同时访问共享数据且至少有一个线程对这些数据进行修改时,由于线程的执行顺序不确定而导致的问题
使用lock(锁)解决争用条件的问题
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)