我需要專家對線程使用情況的建議和意見。我有一個簡單的「插件」DLL,它有2-3個線程,每個都以_beginthreadex()開頭。C++在舊版PC上執行CPU使用率問題
線程看起來是這樣的:
unsigned __stdcall Thread(void* pArguments)
{
while (true)
{
// do something
Sleep(3000);
}
_endthreadex(0);
return 0;
}
現在,這個線程並沒有很高的CPU使用率,它適用於大多數新PC的預期,但是我發現,對老年人的PC與雙核CPU例如,使用這種線程方法運行2-3個實例需要大量的CPU。我無法解釋自己爲什麼,我不知道該怎麼做。
我試過CreateThread()也是,但它沒有做出改變。有人可以請指導我如何創建一個線程,將在所有PC上以相同的方式運行?如果我做錯了什麼,那麼請向我解釋什麼...
謝謝!
你確定你的睡眠呼叫實際上是在睡覺嗎?如果這會立即返回,你將會殺死你的線程,並以100%的CPU運行。 – tadman
爲什麼你不想使用CPU? tbh我發現它有點愚蠢,試圖最大限度地減少線程的CPU使用率,而線程除了睡眠之外什麼也不做。 – user463035818
好吧,它確實叫睡眠(),因爲我測試,它運行每X毫秒我放入睡眠()... –