Как ограничить использование ЦП процесса в Windows?

Мне нужно контролировать использование CPU моего приложения до определенного предела. Мое приложение будет работать на Win XP, Vista, Win7 и Windows 8.

Я попытался реализовать, чтобы получить загрузку ЦП текущего процесса и использовать метод Sleep (). (Я использовал API GetProcessTimes& GetSystemTimes)

псевдокод:

    for(;;)
{
//Get the current process's CPU Usage
int cpuUsage  = CalculateCPUUsage();
if(cpuUsage > 50)
Sleep(10)
else
{
//Project implementation code
}
}

Вопрос:

Могу ли я написать приложение для отслеживания загрузки ЦП процесса и, когда ЦП достигает допустимого предела, останавливать процесс и продолжать его.

Заранее спасибо за помощь.

4

Решение

Если вы просто пытаетесь придать процессу более низкий приоритет, чтобы быть лучше для других потоков, вы можете установить его приоритет с помощью SetThreadPriority, например:

SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
1

Другие решения

Вы можете ограничить использование ЦП вашего процесса или любого другого процесса, добавив интересующий процесс к объекту Job и наложив ограничения на объект Job.

Одним из ограничений ресурсов, которые можно настроить для объектов Job, является использование процессора:

Если вам нужно использовать подход, предшествующий Windows 8, обратите особое внимание на примечание:

Чтобы зарегистрироваться для уведомления о превышении этого лимита без завершения процессов, используйте функцию SetInformationJobObject с информационным классом JobObjectNotificationLimitInformation

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector