1

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

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

现在,如果我坐下来观察这个线程,它会花费 98% 的时间处于“就绪”状态,而其他时间则处于“运行”状态。为了用间隔更好地说明这一点:

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 

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

提前谢谢你的帮助!

4

1 回答 1

2

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

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

于 2013-11-08T12:53:13.010 回答