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
        }    
    }

问题:

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

在此先感谢您的帮助。

4

2 回答 2

1

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

SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
于 2013-05-03T04:41:57.303 回答
1

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

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

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

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

于 2013-05-03T04:23:27.500 回答