Повышение приоритета
Каждый поток имеет динамический приоритет. Это приоритет планировщика, используемого для определения выполняемого потока. Изначально динамический приоритет потока совпадает с базовым приоритетом. Система может повысить и снизить динамический приоритет, чтобы обеспечить скорость реагирования и отсутствие нехватки потоков на время процессора. Система не повышает приоритет потоков с базовым уровнем приоритета от 16 до 31. Только потоки с базовым приоритетом от 0 до 15 получают динамические повышение приоритета.
Система повышает динамический приоритет потока, чтобы повысить его скорость реагирования следующим образом.
Когда процесс, использующий NORMAL_PRIORITY_CLASS, будет доставлен на передний план, планировщик повышает класс приоритета процесса, связанного с окном переднего плана, чтобы он был больше или равен классу приоритета любых фоновых процессов. Класс приоритета возвращается к исходному параметру, когда процесс больше не находится на переднем плане.
Когда окно получает входные данные, такие как сообщения таймера, сообщения мыши или ввод клавиатуры, планировщик повышает приоритет потока, которому принадлежит окно.
Когда условия ожидания заблокированного потока удовлетворены, планировщик повышает приоритет потока. Например, когда операция ожидания, связанная с диском или вводом-выводом клавиатуры, завершается, поток получает повышение приоритета.
Вы можете отключить функцию повышения приоритета, вызвав функцию SetProcessPriorityBoost или SetThreadPriorityBoost. Чтобы определить, отключена ли эта функция, вызовите функцию getProcessPriorityBoost или GetThreadPriorityBoost.
После повышения динамического приоритета потока планировщик уменьшает этот приоритет на один уровень каждый раз, когда поток завершает срез времени, пока поток не вернется к его базовому приоритету. Динамический приоритет потока никогда не меньше базового приоритета.