VC++ MFC 编写的程序,有什么可用的方法自动控制CPU,现在程序一运行,CPU就占用很高

2024年11月28日 14:53
有1个网友回答
网友(1):

你的工作线程式循环执行的吗?
如果是,在非正常情况下用Sleep(1);这样你的cpu一定就下去了。举个例子:
你的线程函数为Thread(LPVOID lpPar);主线程有一个bool型变量m_bRun控制线程中执行的具体语句。将主线程的相关类(class CXXXDlg)的this指针传入工作线程。则:
Thread(LPVOID lpPar)
{
CXXXDlg *pDlg = (CXXXDlg*)lpPar;
while (true)
{
if (pDlg->m_bRun)
{
action;//你计划工作线程中需要做的工作
}
else
{
Sleep(1);
}
}
}

在主线程控制变量m_bRun,在需要执行action的时候将其设置为true,不必要的时候设置为false,这样cpu立马就降了。
如果你程序要求每次循环都要做action,那就不是线程的问题,就要看action里有哪些地方占cpu,如果action是什么编码算法啊,大量数据转换啊,那就要优化这些算法了。