读文网>电脑>电脑硬件知识>CPU知识

多线程执行CPU过高问题2篇

在项目开发过程中使用到多线程技术,有时程序运行起来占用CPU很高(具体占用多少,跟你的CPU核数有关。CPU过高问题,CPU多线程的问题,下面是读文网小编带来的关于多线程执行CPU过高问题的内容,欢迎阅读!

看了多线程执行CPU过高问题文章内容的人还看:


多线程执行CPU过高问题:

CPU占用高不高,跟你的线程数多少没有太多的影响。因为若你CPU是双核,即使只创建了2个子线程,而这两个子线程是2个死循环,此时你的CPU占用也会是相当的高的。

不信的可以直接试试。

CPU占用高不高也不能只看本程序运行起来的CPU占用率,因为若是你的程序使用了内核对象的调用,那么在任务管理器中你会看到你的程序占用CPU是不高的,但使用到内核对象在内核调用中的那些服务程序就会显示CPU占用高。

[cpp]view plain?
  1. int_tmain(intargc,_TCHAR*argv[])
  2. {
  3. InitializeCriticalSection(&m_gCriticalSection);
  4. https://一个线程最多可以挂起MAXIMUM_SUSPEND_COUNT次,即127次
  5. https://线程1
  6. unsignedthreadID;
  7. hThread1=(HANDLE)_beginthreadex(NULL,0,ThreadProc1,NULL,0,&threadID);
  8. https://线程2
  9. unsignedthreadID2;
  10. hThread2=(HANDLE)_beginthreadex(NULL,0,ThreadProc2,NULL,0,&threadID2);
[cpp]view plain?
  1. return0;
[cpp]view plain?
  1. unsigned__stdcallThreadProc1(void*pParam)
  2. {
  3. https://打印数字iCount
  4. if(0==m_gCount)
  5. {
  6. Sleep(2000);
  7. }
  8. while(1)
  9. {
  10. EnterCriticalSection(&m_gCriticalSection);
  11. m_gCount++;
  12. <SPAnstyle="color:#ff0000;">cout<<"线程一:"<<m_gCount<<endl;https://两个线程函数中的的这句不注释掉,该程序在任务管理中显示占用的CPU是不高的,但内核调用占用CPU很高</span>
[cpp]view plain?
  1. <spanstyle="color:#ff0000;">https://若是注释掉,则程序在任务管理器中显示占用的CPU就会很高
  2. </span>LeaveCriticalSection(&m_gCriticalSection);
  3. https://Sleep(1000);
  4. }
  5. return0;
  6. }
  7. unsigned__stdcallThreadProc2(void*pParam)
  8. {
  9. https://打印数字iCount
  10. while(1)
  11. {
  12. EnterCriticalSection(&m_gCriticalSection);
  13. m_gCount++;
  14. <spanstyle="color:#ff0000;">cout<<"另一线程:"<<m_gCount<<endl;
  15. </span>LeaveCriticalSection(&m_gCriticalSection);
  16. https://Sleep(1000);
  17. }
  18. return0;
  19. }

相关热搜

相关文章

【CPU知识】热点

【CPU知识】最新