

23. Приоритеты потоков в Windows
Количество процессорного времени, выделяемое конкретному потоку, определяется многими факторами. Во-первых, каждый процесс обладает собственным базовым уровнем приоритета, который присваивается всем принадлежащим ему потокам. Во-вторых, каждый из потоков обладает собственным приоритетом, который добавляется к базовому значению.
ОС поддерживает 4 класса приоритетов процессов: idle (простаивающий), normal (нормальный), high (высокий) и realtime (реального времени). Программы, запускаемые пользователем, основном относятся к приложениям с классом приоритета normal. Приоритет idle идеален для приложений, занимающихся мониторингом системы или хранителя экрана (screen saver). Класс приоритета high следует использовать только при необходимости. Класс приоритета realtime используют только: 1) в программе, напрямую “общающейся” с оборудованием, и 2) если приложение выполняет быстротечную операцию, которую нельзя прерывать ни в коем случае.
Потоки имеют 5 уровней относительного приоритета. Их описание приведено в таблице 1
Таблица 1 - Уровни приоритета потоков
Использование нескольких потоков в одном процессе очень важно по нескольким причинам. Во-первых, это позволяет добиться минимального простоя процессора, а значит - работать более эффективно. Во-вторых, потоки могут выполнять какие-либо действия в фоновом режиме относительно основной программы. В-третьих, потоки удобно использовать также в случае, если блокирование или подвисание какой-либо процедуры не должно стать причиной нарушений функционирования основной программы.
ОС поддерживает 4 класса приоритетов процессов: idle (простаивающий), normal (нормальный), high (высокий) и realtime (реального времени). Программы, запускаемые пользователем, основном относятся к приложениям с классом приоритета normal. Приоритет idle идеален для приложений, занимающихся мониторингом системы или хранителя экрана (screen saver). Класс приоритета high следует использовать только при необходимости. Класс приоритета realtime используют только: 1) в программе, напрямую “общающейся” с оборудованием, и 2) если приложение выполняет быстротечную операцию, которую нельзя прерывать ни в коем случае.
Потоки имеют 5 уровней относительного приоритета. Их описание приведено в таблице 1
Таблица 1 - Уровни приоритета потоков
Идентификатор уровня | Описание |
THREAD_PRIORITY_LOWEST | Приоритет потока должен быть на 2 единицы меньше класса приоритета процесса |
THREAD_PRIORITY_BELOW_NORMAL | Приоритет потока должен быть на 1 единицу меньше класса приоритета процесса |
THREAD_PRIORITY_NORMAL | Приоритет потока должен соответствовать классу приоритета процесса |
THREAD_PRIORITY_ABOVE_NORMAL | Приоритет потока должен быть на 1 единицу больше класса приоритета процесса |
THREAD_PRIORITY_HIGHEST | Приоритет потока должен быть на 2 единицы больше класса приоритета процесса |
Использование нескольких потоков в одном процессе очень важно по нескольким причинам. Во-первых, это позволяет добиться минимального простоя процессора, а значит - работать более эффективно. Во-вторых, потоки могут выполнять какие-либо действия в фоновом режиме относительно основной программы. В-третьих, потоки удобно использовать также в случае, если блокирование или подвисание какой-либо процедуры не должно стать причиной нарушений функционирования основной программы.