ГлавнаяarrowСистемное программированиеarrow23. Приоритеты потоков в Windows

23. Приоритеты потоков в Windows

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

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

Hosted by uCoz