sleep 与 sched_yield() 的区别

Posted ishen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sleep 与 sched_yield() 的区别相关的知识,希望对你有一定的参考价值。

sleep() 将进程放入等待队列,休眠结束后,进入运行队列获取cpu分配,sched_yield()将进程分配到过期队列,所有进程都运行完成后才会运行

正文

进程调度队列

操作系统的进程调度有三大队列:
三个队列:运行队列,过期队列,等待队列

1.等待队列:休眠(或者阻塞)的进程放在等待队列里面,进程的状态为TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE

2.运行队列:这些进程还没有用完时间片,因此允许它们运行。

3.过期队列:时间片运行完的进程放在这个队列,这里面的进程不能被调度运行,除非所有的进程都运行完了自己的时间片。

sleep 与 sched_yield的区别

sleep将进程放入等待队列,休眠结束后,进入运行队列去争取取cpu分配,sched_yield()将进程分配到过期队列,相当于已经结束了进入运行队列的过程,只有等所有进程都运行完成后才会运行

ref

https://blog.csdn.net/xiaowenmu1/article/details/90552391

以上是关于sleep 与 sched_yield() 的区别的主要内容,如果未能解决你的问题,请参考以下文章

sched_yield 标记为***热点

sleep与 wait区别

线程中wait 和sleep 的区别

系统 - sleep, hibernate与hybrid-sleep的区别

使用Timer和sleep有啥区别

sleeps和sleep有啥区别