В любом классе приоритета индивидуальный приоритет потока определяет, сколько времени получит поток в своем процессе. Когда поток создается впервые, он получает нормальный приоритет, но вы можете изменить его — даже во время выполнения потока. Текущее значение приоритета потока можно узнать, вызвав функцию GetThreadPriorityO. Изменить это значение можно с помощью функции setThreadPriority (). Далее показаны прототипы этих функций: BOOL SetThreadPriority(HANDLE hThread, int priority); BOOL GetThreadPriority(HANDLE hThread); g обеих функциях параметр hThread содержит дескриптор потока. В функции SetThreadPriority о параметр priority задает новое значение приоритета потока. Если возникает ошибка, функция SetThreadPriority о возвращает О, в противном случае — ненулевое значение. Функция GetThreadPriorityo возвращает текущий приоритет потока. Возможные значения приоритета приведены в табл. 3.1 в порядке следования от наивысшего к низшему. Таблица 3.1. Стандартные значения приоритета потока Именованная константа Числовое значение THREAD_PRIORITY_TT.ME_CRITT.CAL 15 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 -15 Эти значения служат инкрементами или декрементами для класса приоритета процесса. Комбинируя приоритет класса и приоритет потока, операционная система Windows предлагает 31 возможное значение для программ-приложений. ФУНКЦИЯ GetThreadPriorityO ВОЗВращавТ THREAD_PRIORITY_ERROR_RETURN, если возникает ошибка. В большинстве случаев, если у потока нормальный класс приоритета, можно свободно экспериментировать, изменяя приоритет потока и не опасаясь катастрофических последствий для общей производительности системы. Разрабатываемая в следующем разделе панель управления (control panel) позволит вам изменять приоритет потока в процессе (но без изменения класса приоритета процесса).
|