Windows поддерживает шесть классов приоритета:
-idle (простаивающий),
-below normal (ниже обычного),
-normal (обычный),
-above normal (выше обычного),
-high (высокий),
-realtime (реального времени).
Самый распространенный класс приоритета – normal, его использует 99% приложений.
Real-lime. Потоки в этом процессе обязаны немедленно реагировать на события, обеспечивая выполнение критических по времени задач. Такие потоки вытесняют даже компоненты операционной системы.
High. Потоки в этом процессе тоже должны немедленно реагировать на события, обеспечивая выполнение критических по времени задач.
Above normal. Класс приоритета, промежуточный между normal и high. Это новый класс, введенный в Windows 2000.
Normal. Потоки в этом процессе не предъявляют особых требований к выделению им процессорного времени.
Below normal. Класс приоритета, промежуточный между normal и idle. Это новый класс, введенный в Windows 2000.
Idle. Потоки в этом процессе выполняются, когда система не занята другой работой. Этот класс приоритета обычно используется для утилит, работающих в фоновом режиме, экранных заставок и приложений, собирающих статистическую информацию.
|
|
Относительный приоритет потока.
Могут быть следующие относительные приоритеты потока.
Time-critical. Поток выполняется с приоритетом 31 в классе real-time и с приоритетом 15 в других классах.
Highest. Поток выполняется с приоритетом на два уровня выше обычною для данного класса.
Above normal. Поток выполняется с приоритетом на один уровень выше обычного для данного класса.
Normal. Поток выполняется с обычным приоритетом процесса для данного класса.
Below normal. Поток выполняется с приоритетом на один уровень ниже обычного для данного класса.
Lowest. Поток выполняется с приоритетом на два уровня ниже обычного для данного класса
Idle. Поток выполняется с приоритетом 16 в классе real-time и с приоритетом 1 в других классах
Таким образом, можно изменять относительные приоритеты потоков в пределах процесса. Уровень приоритета формируется самой системой, исходя из класса приоритета процесса и относительного приоритета потока.
В системе предусмотрена возможность изменения класса приоритета самим выполняемым процессом – вызовом функции SetPriorityClass:
BOOL SetPriontyClass(HANDLE hProcess, DWORD fdwPriority);
Эта функция меняет класс приоритета процесса, определяемого описателем hProcess, в соответствии со значением параметра fdwPriority.