Система приоритетов
Таблица 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().
Необходимо отметить, что служебные потоки ОС, производящие операции с мышью и клавиатурой, а также некоторые файловые операции, работают с приоритетом реального времени. Поэтому использование пользовательскими потоками таких приоритетов может повлиять на корректность функционирования ОС.
