c# Thread.Sleep();
1..Sleep()属于线程挂起给予cpu从新计算优先级的函数,线程挂起时间,也就是在规定时间内不参与cpu使用权的选举
2.当.Sleep()内部参数为0的时候就是在告诉cpu,我当前占用时间差不多够用了,想让大家在重新选举一次cpu使用权 比较顺应民意的做法,可以让别的更加需要cpu的线程先使用。
3.window和linux的内部cpu分配机制不太一样
1)linux的内部分配机制是,假如当前线程挂起或者结束 那他会让线程排队一个一个来而不是根据需要的权重进行分配
2)window内部的cpu分配机制就不一样了,他会计算线程的优先级和饥饿程度(迫切需要cpu的程度)来进行选择,比如有m1.。。。m6六个线程同时存在,比如当前使用线程的是m6但是这个线程人比较好使用一段时间想在让系统选举一下,但是系统不会接收他的指令,但是他要是在.Sleep()中写的是0,那就代表他在接下来的0秒钟内不进行争夺cpu使用权,当系统重新分配的时候0秒也就过了,这个线程也就可以接着参加使用cpu的选举,注意:如果是linux的话会直接轮到下一个线程而不是选举
4.线程假死情况,这种情况是指单个线程死循环或其他原因进行假死状态,而不是cpu进入假死状态,我们界面上看到cpu假死的原因是,在当前线程假死时间过长,系统会强制将当前线程挂起,让其他线程执行 而其他线程执行完成后又轮到这个假死线程执行,但是这个强制挂起的机制比较长。。。。。。。。
个人对于线程睡眠定时的理解,有参考资料,有大佬觉得不对多多指教,小铭敬上!!!!!!
勿看他人拿高薪,且看闲时谁在拼