我有一個線程運行在一個循環中並執行任務。我怎樣才能讓這個cpu密集程度降低?
outTask::Task* task;
while (!m_out_stop) {
println("abc");
while (m_outQueue.pop(task)) {
println("123");
task->execute();
}
}
我該如何讓這個CPU佔用更少?我可以讓線程在每個任務之間休眠,但這會造成延遲,因此不是理想的解決方案。
Ps。打印語句用於調試目的。
() 。 withh C++ 11你可以使用std :: this_thread :: yield() – user5976242
@ user5976242至少在windows上,'yield'不會減少CPU使用率。如果你屈服了,但是調度器沒有其他的線程來調度那個cpu,它將會立即重新調度你的線程,從而限制cpu。 – sbabbi
@sbabbi你是對的。我想我只是不明白這個問題。如果沒有其他線程準備好運行,那麼我想使用最大的CPU來完成我的任務(我不關心它是CPU密集型)。但是,如果我的任務是佔用CPU,並阻止其他線程的響應/操作順利,那麼我會想屈服。 – user5976242