Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows


Абстрагирование приоритетов - часть 5


Относительный приоритет потока

Idle

Класс приоритета процесса

Real-time

Below normal

Normal

Above normal

High

Time-critical (критичный по времени)

15

15

15

15

15

31

Highest (высший)

6

8

10

12

15

26

Above normal (выше обычного)

5

7

9

11

14

25

Normal (обычный)

4

6

8

10

13

24

Below normal (ниже обычного)

3

5

7

9

12

23

Lowest (низший)

2

4

6

8

11

22

Idle (простаивающий)

1

1

1

1

1

16

Обратите внимание, что в таблице не показано, как задать уровень приоритета 0. Это связано с тем, что нулевой приоритет зарезервирован для потока обнуления стра ниц, и никакой другой поток не может иметь такой приоритет. Кроме того, уровни 17-21 и 27-30 в обычном приложении тоже недоступны. Вы можете пользоваться ими, только если пишете драйвер устройства, работающий в режиме ядра. И еще одно: уровень приоритета потока в процессе с классом real-time не может опускаться ниже 16, а потока в процессе с любым другим классом — подниматься выше 15.

NOTE
Концепция класса приоритета вводит некоторых в заблуждение. Они делают отсюда вывод, будто процессы участвуют в распределении процессорного вре мени. Так вот, процессы никогда не получают процессорное время — оно вы деляется лишь потокам Класс приоритета процесса — сугубо абстрактная кон цепция, введенная Microsoft c единственной целью: скрыть от разработчика внутреннее устройство планировщика.

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




Начало  Назад  Вперед



Книжный магазин