基础问题请教:为什么while(1){}cpu利用率是100%,线程不是有时间片吗?过了时间不是要让出时间的吗?

时间:2021-10-20 19:23:43
基础问题请教:为什么while(1){}cpu利用率是100%,线程不是有时间片吗?过了时间不是要让出时间的吗?为什么cpu时间还是100%的?

6 个解决方案

#1


先搞清楚CPU的利用率到底是怎么算的,我也不知道,但估计不是你这么算的

#2


当它让出时间片时,操作系统马上进行轮询,即使其他所有进程都不需要时间片运行,也会询问到本进程需要运行,于是下一个时间片还会由本进程把持.当然就认为cpu占用100%了. 只有当一次轮询所有进程都不需要,这个时间片才会算为空闲.

#3


谢谢a_b_c_abc10!我有点不大明白,还想问下,只有所有进程都不需要这个时间片,cpu利用率才不会100%吗?会出现其他任何程序都不需要该个时间片的的情况吗?

#4


一般的个人电脑上,出现大多数程序大多数时间都没有在做时,而只有你的程序在不断轮循,这有什么奇怪的?

#5


哦。 谢谢

#6


>>只有所有进程都不需要这个时间片,cpu利用率才不会100%吗。

不是的,CPU的利用率当然是用时间段来统计的,虽然这个时间段很短。
但问题是你的程序一直在忙,CPU要么在进行切换,要么就是在执行别的程序,要么就是在执行你的程序,自然不会闲着。

一个程序实在没事可干的时候应该退出,或者去睡一觉(调用Sleep),或者在开始等待一个事件发生。

#1


先搞清楚CPU的利用率到底是怎么算的,我也不知道,但估计不是你这么算的

#2


当它让出时间片时,操作系统马上进行轮询,即使其他所有进程都不需要时间片运行,也会询问到本进程需要运行,于是下一个时间片还会由本进程把持.当然就认为cpu占用100%了. 只有当一次轮询所有进程都不需要,这个时间片才会算为空闲.

#3


谢谢a_b_c_abc10!我有点不大明白,还想问下,只有所有进程都不需要这个时间片,cpu利用率才不会100%吗?会出现其他任何程序都不需要该个时间片的的情况吗?

#4


一般的个人电脑上,出现大多数程序大多数时间都没有在做时,而只有你的程序在不断轮循,这有什么奇怪的?

#5


哦。 谢谢

#6


>>只有所有进程都不需要这个时间片,cpu利用率才不会100%吗。

不是的,CPU的利用率当然是用时间段来统计的,虽然这个时间段很短。
但问题是你的程序一直在忙,CPU要么在进行切换,要么就是在执行别的程序,要么就是在执行你的程序,自然不会闲着。

一个程序实在没事可干的时候应该退出,或者去睡一觉(调用Sleep),或者在开始等待一个事件发生。