线程高CPU使用率但处于“就绪”状态

时间:2013-11-08 12:12:29

标签: windows multithreading cpu

我在Windows中使用Process Explorer来检查进程。

当我查看此进程的属性中的线程选项卡时,我看到1个具有高CPU使用率的线程(双核服务器的总CPU约为30-49%,因此如果等同于此,则使用大量CPU时间单线程到单个CPU的时间间隔值。)

现在,如果我观察这个线程,它将98%的时间花在“Ready”状态,而另一个时间是“Running”状态。为了更好地说明间隔:

t=0, CPU = 35, State = Ready 
t=1, CPU = 49, State = Ready 
t=2, CPU = 50, State = Ready 
t=3, CPU = 39, State = Ready 
t=4, CPU = 32, State = Ready 
t=5, CPU = 35, State = Ready 
t=6, CPU = 37, State = Running
t=7, CPU = 40, State = Ready 
t=8, CPU = 42, State = Ready 
t=9, CPU = 43, State = Ready 

当处于Ready状态时,该线程如何使用这么多的CPU?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

这是标准的海森堡工作,你看到的是受到观察行为的影响。为了让Process Explorer能够为正在运行的线程创建快照,它需要自己获取处理器。这使得另一个线程可能忙于执行的可能性降低,尤其是在2核处理器上。 “就绪”意味着线程处于活动状态,它只是在拍摄快照时没有机会获得处理器。

状态只能在多核处理器上获得可靠性。 Mark Russinovich使用的那种:)