1.Sleep函数作用就是:操作系统“在未来的多少毫秒内我不参与CPU竞争”。
Windows: Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”,进程立刻重新进入就绪队列,windows操作系统重新计算各个线程的优先级,选择优先级最高的线程分配CPU使用权。Windows原理层面,CPU竞争都是线程级。
2.为了等待资源、事件,线程会进入等待队列,获得资源后会进入就绪队列,等待CPU调度。
3.sched_yield()会让出当前线程的CPU占有权,然后把线程放到就绪队列的尾端,然后一个新的线程会占用CPU。
sleep则是等待一定时间后等待CPU的调度,然后去获得CPU资源(这也是usleep()为什么不准的原因)。sleep(0)使线程直接进入到就绪队列队尾
sleep(0)==sched_yield()
区别是sleep耗时多些
4.
原文:https://www.cnblogs.com/liuweiweitju/p/14794590.html