Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是 C++ 的菜鸟;我有个问题。我在用:
while(true) { doSomething(); Sleep(time); }
...在一个线程中,我的程序由于睡眠本身而占用了很高的 CPU(它检查过,一定是问题所在)。有没有办法使用别的东西?
“Sleep()”不消耗 CPU - 除了调用开销。
一个可能的原因是您有其他线程在旋转。如果您使用 OpenMP 或 Intel 的 Thread Building Blocks 之类的东西,就会发生这种情况;在睡眠期间,这些系统使用的工作线程不断轮询要执行的工作,从而导致 CPU 使用率很高。
或者您有自己的工作线程正在旋转 CPU 等待工作交付。