VC++ MFC 编写的程序,有什么可用的方法自动控制CPU,现在程序一运行,CPU就占用很高
我创建了工作线程,但是CPU占用还是很高,我的想法是能不能在程序里自动控制CPU,比如占用率,不超过30%,哪位仁兄在帮小弟一下,谢谢了!...
我创建 了工作线程, 但是CPU占用还是很高,我的想法是能不能在程序里自动控制CPU,比如占用率,不超过30% , 哪位仁兄在帮小弟一下,谢谢了!
展开
展开全部
你的工作线程式循环执行的吗?
如果是,在非正常情况下用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是什么编码算法啊,大量数据转换啊,那就要优化这些算法了。
如果是,在非正常情况下用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是什么编码算法啊,大量数据转换啊,那就要优化这些算法了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询