如何在Windows上限制进程的CPU使用率?

时间:2012-10-19 19:41:32

标签: c++ window cpu-usage

我需要将应用程序的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
        }    
    }

问题:

我是否可以编写一个应用程序来监控进程的CPU使用率,每当CPU达到允许的限制时,停止该进程并继续它。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以通过向Job对象添加感兴趣的进程并对Job对象设置限制来限制进程或任何其他进程的CPU使用率。

可以为Job对象配置的资源限制之一是CPU使用率:

如果您必须使用Windows 8之前的方法,请注意注意事项:

  

要在超过此限制时注册通知而不终止进程,请使用带有JobObjectNotificationLimitInformation信息类的SetInformationJobObject函数

答案 1 :(得分:1)

如果您只是尝试为进程设置较低优先级以便更好地使用其他线程,则可以使用SetThreadPriority设置其优先级,例如:

SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);