Bir döngü içinde çalışan ve görevleri yürüten bir iş parçacığım var.Bunu daha az cpu yoğun olarak nasıl yapabilirim?
outTask::Task* task;
while (!m_out_stop) {
println("abc");
while (m_outQueue.pop(task)) {
println("123");
task->execute();
}
}
Bunu daha az CPU yoğun hale nasıl getirebilirim? İpliği her görev arasında uyuyabilirim, ancak bu gecikmeye neden olabilir ve bu nedenle ideal bir çözüm değildir.
Ps. Baskı ifadeleri hata ayıklama amaçlıdır.
dur O yavaş çalışma parçacığı çalıştırmak yapar
değil . withh C++ 11 kullanabilirsiniz std :: this_thread :: verim() – user5976242
@ user5976242 En azından pencerelerde, 'verim' CPU kullanımını azaltmaz. Eğer verim alırsanız, ancak zamanlayıcının bu işlemci üzerinde zamanlamak için başka bir iş parçacığı yoksa, iş parçacığınızı derhal yeniden programlayarak cpu'yu kısaltın. – sbabbi
@sbabbi Doğru. Sanırım sorunu anlamıyorum. Eğer başka bir iş parçacığı çalışmaya hazır değilse, o zaman görevimi tamamlamak için maksimum CPU kullanmak istiyorum (CPU'nun yoğun olup olmadığı umurumda değil). Ancak, eğer görevim CPU'yu hoplayıyorsa ve diğer iş parçacıklarının sorunsuz bir şekilde yanıt vermesini/çalışmasını engelliyorsa, o zaman vermek istiyorum. – user5976242