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 に答える