Система приоритетов
Таблица 3. Классы приоритетов.
Класс приоритета | Базовый приоритет | Примечание |
---|---|---|
REALTIME PRIORITY CLASS | 24 | |
HIGH PRIORITY CLASS | 13 | |
ABOVE NORMAL PRIORITY CLASS | 10 | Только WIN 2000 |
NORMAL PRIORITY CLASS | 8 | |
BELOW NORMAL PRIORITY CLASS | 6 | Только WIN 2000 |
IDLE PRIORITY CLASS | 4 |
Поток может иметь одно из 7 значений (см. таблицу 4): 5 значений, относительных внутри каждого класса приоритетов, и 2 значения, относительных внутри диапазонов динамического приоритета и приоритетов реального времени.
Таблица 4. Относительный приоритет.
Относительный приоритет | |
---|---|
THREAD PRIORITY TIME CRITICAL | 15 (31) |
THREAD PRIORITY HIGHEST | +2 |
THREAD PRIORITY ABOVE NORMAL | +1 |
THREAD PRIORITY NORMAL | +0 |
THREAD PRIORITY BELOW NORMAL | -1 |
THREAD PRIORITY LOWEST | -2 |
THREAD PRIORITY IDLE | 1 (16) |
Два значения, обозначающие минимальное и максимальное значение приоритета внутри диапазона динамических приоритетов и приоритетов реального времени – это THREAD_PRIORITY_IDLE и THREAD_PRIORITY_ TIME_CRITICAL. Для диапазона динамических приоритетов они обозначают базовые приоритеты 1 и 15, а для диапазона приоритетов реального времени – 16 и 31 соответственно.
Любой поток всегда создается с относительным приоритетом THREAD_ PRJORITY_NORMAL. Соответствующие значения базового приоритета в зависимости от класса приоритета указаны в таблице 3.
Относительный приоритет потока может быть получен/изменен с помощью WIN32-функций GetThreadPriority()/SetThreadPriority().
Необходимо отметить, что служебные потоки ОС, производящие операции с мышью и клавиатурой, а также некоторые файловые операции, работают с приоритетом реального времени. Поэтому использование пользовательскими потоками таких приоритетов может повлиять на корректность функционирования ОС.