当前位置: 技术问答>linux和unix
Linux: 时间片 与 while 长时间占用CPU的问题
来源: 互联网 发布时间:2017-04-12
本文导语: 我有一个问题,希望各位老板指教下。 Linux任务调度是通过时间片对吧,就是说每个任务分配一定的时间,时间到就发生任务切换。 这么说,每个任务获得运行的概率应该差不多吧。 那为什么一个线程里这样写,...
我有一个问题,希望各位老板指教下。
Linux任务调度是通过时间片对吧,就是说每个任务分配一定的时间,时间到就发生任务切换。
这么说,每个任务获得运行的概率应该差不多吧。
那为什么一个线程里这样写,会占用CPU很多呢?
while(1)
{
//do something
//sleep(1);
}
就是说,如果while(1)中没有sleep或者delay的话,这个任务就会占有绝大多数CPU的运行时间
这是怎么回事,麻烦解释下。
Linux任务调度是通过时间片对吧,就是说每个任务分配一定的时间,时间到就发生任务切换。
这么说,每个任务获得运行的概率应该差不多吧。
那为什么一个线程里这样写,会占用CPU很多呢?
while(1)
{
//do something
//sleep(1);
}
就是说,如果while(1)中没有sleep或者delay的话,这个任务就会占有绝大多数CPU的运行时间
这是怎么回事,麻烦解释下。
|
一般写的程序因为各种原因都会休眠,比如IO操作,而IO操作常常会导致进程休眠。所以一般进程都不会长期占用cpu
而死循环这种进程不会休眠,一有机会就占用cpu运行其时间片,所以就会是这种进程占用了大部分cpu时间
而死循环这种进程不会休眠,一有机会就占用cpu运行其时间片,所以就会是这种进程占用了大部分cpu时间
|
需要cpu的大家均分,不需要进程都会很谦让的,都会让出来的,这时候一个流氓进程就抢到了很多啊。