0

我是 C++ 的菜鸟;我有个问题。我在用:

while(true) { 
      doSomething(); 
      Sleep(time);
} 

...在一个线程中,我的程序由于睡眠本身而占用了很高的 CPU(它检查过,一定是问题所在)。有没有办法使用别的东西?

4

1 回答 1

2

“Sleep()”不消耗 CPU - 除了调用开销。

一个可能的原因是您有其他线程在旋转。如果您使用 OpenMP 或 Intel 的 Thread Building Blocks 之类的东西,就会发生这种情况;在睡眠期间,这些系统使用的工作线程不断轮询要执行的工作,从而导致 CPU 使用率很高。

或者您有自己的工作线程正在旋转 CPU 等待工作交付。

于 2013-09-21T01:56:06.450 回答