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 を回転させている独自のワーカー スレッドがあります。