生活随笔
收集整理的這篇文章主要介紹了
多线程执行CPU过高问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在項(xiàng)目開發(fā)過程中使用到多線程技術(shù),有時(shí)程序運(yùn)行起來占用CPU很高(具體占用多少,跟你的CPU核數(shù)有關(guān)。若是單核,可能直接100%),應(yīng)該以release版本的運(yùn)行的情況為準(zhǔn)(因?yàn)槿羰嵌鄠€(gè)子線程間的阻塞沒處理好,可能調(diào)試過程中查看的CPU占用并不高)。這種問題,一般都是在多線程的處理中,有死循環(huán)了。
解決辦法:
找到所有的線程處理函數(shù)并在入口打上斷點(diǎn),耐心的一步步調(diào)試,只要堅(jiān)信問題的存在,最后總是會(huì)找出問題的。
?
CPU占用高不高,跟你的線程數(shù)多少?zèng)]有太多的影響。因?yàn)槿裟鉉PU是雙核,即使只創(chuàng)建了2個(gè)子線程,而這兩個(gè)子線程是2個(gè)死循環(huán),此時(shí)你的CPU占用也會(huì)是相當(dāng)?shù)母叩摹?/p>
不信的可以直接試試。
CPU占用高不高也不能只看本程序運(yùn)行起來的CPU占用率,因?yàn)槿羰悄愕某绦蚴褂昧藘?nèi)核對(duì)象的調(diào)用,那么在任務(wù)管理器中你會(huì)看到你的程序占用CPU是不高的,但使用到內(nèi)核對(duì)象在內(nèi)核調(diào)用中的那些服務(wù)程序就會(huì)顯示CPU占用高。
[cpp]?view plaincopyprint?
int?_tmain(int?argc,?_TCHAR*?argv[])?? {?? ????InitializeCriticalSection(&m_gCriticalSection);?? ?????? ?????? ????unsigned?threadID;?? ????hThread1?=?(HANDLE)_beginthreadex(NULL,?0,?ThreadProc1,?NULL,?0,?&threadID);?? ?????? ?????? ????unsigned?threadID2;?? ????hThread2?=?(HANDLE)_beginthreadex(NULL,?0,?ThreadProc2,?NULL,?0,?&threadID2);??
[cpp]?view plaincopyprint?
return?0;??
[cpp]?view plaincopyprint?
unsigned?__stdcall?ThreadProc1(void*?pParam)?? {?? ?????? ????if(0?==?m_gCount)?? ????{?? ????????Sleep(2000);?? ????}?? ?? ????while(1)?? ????{?? ????????EnterCriticalSection(&m_gCriticalSection);?? ????????m_gCount++;?? ????????<span?style="color:#ff0000;">cout?<<?"線程一:"?<<?m_gCount?<<?endl;???
[cpp]?view plaincopyprint?
<span?style="color:#ff0000;">????????????????????????? </span>???????LeaveCriticalSection(&m_gCriticalSection);?? ?????????? ?????????? ????}?? ?? ????return?0;?? }?? ?? unsigned?__stdcall?ThreadProc2(void*?pParam)?? {?? ?????? ????while(1)?? ????{?? ????????EnterCriticalSection(&m_gCriticalSection);?? ????????m_gCount++;?? ????????<span?style="color:#ff0000;">cout?<<?"另一線程:"?<<?m_gCount?<<?endl;??? </span>???????LeaveCriticalSection(&m_gCriticalSection);?? ?????????? ?????????? ????}?? ?? ????return?0;?? }??
總結(jié)
以上是生活随笔為你收集整理的多线程执行CPU过高问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。