4
我正在使用std :: threads,在我的設置中,我的其他線程(可變數量,當前設置爲10)正在使用如此多的容量,以至於我在任務管理器中使用的cpu達到100%爲應用程序。這使我的主線程滯後,這應該是實時的(我認爲這是滯後的原因)。C++線程最大CPU
我用英特爾放大器調試,但沒有其他線索爲什麼主線程應該滯後。我的輔助線程在哪裏都很忙。
是否可以告訴一個線程有多少CPU可以使用最大?我怎樣才能確保我的其他線程不影響我的主線程的性能?
主題初始化:
for (int i = 0; i < numberOfThreads; i++)
{
std::thread* thread = new std::thread(&MyClass::mWorker, this);
mThreads.push_back(thread);
}
我的系統:i5-4590 3.3GHz的,8 GB RAM,Windows 8的64位,OGRE3D圖形引擎
您可以將其他線程設置爲比主線程更低的優先級:在C++ 11中不可能直接使用,但可以使用「native」線程ID - 請參閱[這裏](http://stackoverflow.com/questions/18884510/portable-way-of-setting-stdthread-priority-in-c11)供討論/細節。 –
我同意託尼D.你也可以考慮有條件地睡眠你的較低優先級的線程。 – gpicchiarelli
您也可以在當前的設計和實施中尋找改進。 – UmNyobe