首页 文章

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

提问于
浏览
4

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

  • 1

    如果你只是试图给进程一个较低的优先级以便更好地使用其他线程,你可以使用SetThreadPriority设置它的优先级,例如:

    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
    
  • 1

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

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

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

    要在超出此限制时注册通知而不终止进程,请将JobInformationJobObject函数与JobObjectNotificationLimitInformation信息类一起使用

相关问题