我需要将应用程序的CPU使用率控制到一定限度 . 我的应用程序将在Win XP,Vista,Win7和Windows 8上运行 .
我尝试实现以获取当前进程的CPU使用率并使用Sleep()方法 . (我使用了API GetProcessTimes和GetSystemTimes)
伪代码:
for(;;)
{
//Get the current process's CPU Usage
int cpuUsage = CalculateCPUUsage();
if(cpuUsage > 50)
Sleep(10)
else
{
//Project implementation code
}
}
Question:
我是否可以编写应用程序来监视进程的CPU使用率,并且只要CPU达到允许的限制,就停止进程并继续进行 .
在此先感谢您的帮助 .
2 回答
如果你只是试图给进程一个较低的优先级以便更好地使用其他线程,你可以使用SetThreadPriority设置它的优先级,例如:
您可以通过向Job对象添加感兴趣的过程并对Job对象设置限制来限制进程或任何其他进程的CPU使用率 .
可以为Job对象配置的资源限制之一是CPU使用率:
89 JOBOBJECT_CPU_RATE_CONTROL_INFORMATION Windows 8和Server 2012中的新增功能 .
如果您必须使用Windows 8之前的方法,请注意注意事项: