На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

SetThreadPriority



The SetThreadPriority function sets the priority value for the specified thread. This value, together with the priority class of the thread's process, determines the thread's base priority level.

BOOL SetThreadPriority(

HANDLE hThread, // handle to the thread
int nPriority // thread priority level
);


Parameters

hThread

Identifies the thread whose priority value is to be set.
Windows NT: The handle must have the THREAD_SET_INFORMATION access right associated with it. For more information, see Thread Objects.

nPriority

Specifies the priority value for the thread. This parameter can be one of the following values:

Priority Meaning
THREAD_PRIORITY_ABOVE_NORMAL Indicates 1 point above normal priority for the priority class.
THREAD_PRIORITY_BELOW_NORMAL Indicates 1 point below normal priority for the priority class.
THREAD_PRIORITY_HIGHEST Indicates 2 points above normal priority for the priority class.
THREAD_PRIORITY_IDLE Indicates a base priority level of 1 for IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority level of 16 for REALTIME_PRIORITY_CLASS processes.
THREAD_PRIORITY_LOWEST Indicates 2 points below normal priority for the priority class.
THREAD_PRIORITY_NORMAL Indicates normal priority for the priority class.
THREAD_PRIORITY_TIME_CRITICAL Indicates a base priority level of 15 for IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, or HIGH_PRIORITY_CLASS processes, and a base priority level of 31 for REALTIME_PRIORITY_CLASS processes.


Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

Every thread has a base priority level determined by the thread's priority value and the priority class of its process. The system uses the base priority level of all executable threads to determine which thread gets the next slice of CPU time. Threads are scheduled in a round-robin fashion at each priority level, and only when there are no executable threads at a higher level does scheduling of threads at a lower level take place.
The SetThreadPriority function enables setting the base priority level of a thread relative to the priority class of its process. For example, specifying THREAD_PRIORITY_HIGHEST in a call to SetThreadPriority for a thread of an IDLE_PRIORITY_CLASS process sets the thread's base priority level to 6. For a table that shows the base priority levels for each combination of priority class and thread priority value, see the SetPriorityClass function.

For IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, and HIGH_PRIORITY_CLASS processes, the system dynamically boosts a thread's base priority level when events occur that are important to the thread. REALTIME_PRIORITY_CLASS processes do not receive dynamic boosts.
All threads initially start at THREAD_PRIORITY_NORMAL. Use the GetPriorityClass and SetPriorityClass functions to get and set the priority class of a process. Use the GetThreadPriority function to get the priority value of a thread.

Use the priority class of a process to differentiate between applications that are time critical and those that have normal or below normal scheduling requirements. Use thread priority values to differentiate the relative priorities of the tasks of a process. For example, a thread that handles input for a window could have a higher priority level than a thread that performs intensive calculations for the CPU.
When manipulating priorities, be very careful to ensure that a high-priority thread does not consume all of the available CPU time. A thread with a base priority level above 11 interferes with the normal operation of the operating system. Using REALTIME_PRIORITY_CLASS may cause disk caches to not flush, hang the mouse, and so on.

See Also

GetPriorityClass, GetThreadPriority, SetPriorityClass


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

SetThreadPriority



Функция SetThreadPriority устанавливает приоритетную величину для определенной резьбы. Эта величина, вместе с приоритетным классом процесса резьбы, определяет базовый приоритетный уровень резьбы.

BOOL SetThreadPriority(

РУЧКА hThread, // оперируется в int nPriority / резьбу/ приоритетный уровень резьбы
);


Параметры

hThread

Идентифицирует резьбу, чья приоритетная величина должна быть установлена.
Окно NT: ручка должна иметь право доступа THREAD_SET_INFORMATION связывал с ним. Более подробно, видьте как Резьба Возражала.

nPriority

Определяет приоритетную величину для резьбы. Этот параметр может быть одним из следующего величин:

Приоритетное Значение
THREAD_PRIORITY_ABOVE_NORMAL Указывает 1 вышеуказанный нормальный приоритет точки для приоритетного класса.
THREAD_PRIORITY_BELOW_NORMAL Указывает 1 нижеуказанный нормальный приоритет точки для приоритетного класса.
THREAD_PRIORITY_HIGHEST Указывает 2 вышеуказанных нормальных приоритета точек для приоритетного класса.
THREAD_PRIORITY_IDLE Указывает базовому приоритетному уровню 1 для IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, или процессов HIGH_PRIORITY_CLASS, и базовый приоритетный уровень 16 для процессов REALTIME_PRIORITY_CLASS.
THREAD_PRIORITY_LOWEST Указывает 2 нижеуказанных нормальных приоритета точек для приоритетного класса.
THREAD_PRIORITY_NORMAL Указывает нормальный приоритет для приоритетного класса.
THREAD_PRIORITY_TIME_CRITICAL Указывает базовому приоритетному уровню 15 для IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, или процессов HIGH_PRIORITY_CLASS, и базовый приоритетный уровень 31 для процессов REALTIME_PRIORITY_CLASS.


Обратные Величины

Если функция добивается успеха, обратная величина ненулевая.
Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы расширять информацию ошибки, назовите GetLastError.

Замечания

Каждая резьба определила базовому приоритетному уровню приоритетной величиной резьбы и приоритетный класс своего процесса. Система использует базовый приоритетный уровень всей выполняемой резьбы, чтобы определять, что какая резьба получает следующую вырезку времени CPU. Резьба запланирована в циклическом способе на каждом приоритетном уровне, и только когда нет программы заправляется на более высоком уровне делает планированием резьбы на более низком уровне происходить.
Функция SetThreadPriority приспосабливается установку базового приоритетного уровня резьбы относительно приоритетного класса своего процесса. Например, определяя THREAD_PRIORITY_HIGHEST на вызове на SetThreadPriority для резьбы процесса IDLE_PRIORITY_CLASS устанавливает базовый приоритетный уровень резьбы на 6. Для таблицы, которая показывает базовым приоритетным уровням для каждой комбинации приоритетного класса и приоритетной величины резьбы, смотри функцию SetPriorityClass.

Для IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, и процессов HIGH_PRIORITY_CLASS, система динамически повышает базовый приоритетный уровень резьбы когда события происходят, что важные для резьбы. процессы REALTIME_PRIORITY_CLASS не получают динамические повышения.
Вся резьба первоначально запускается в THREAD_PRIORITY_NORMAL. Используйте GetPriorityClass и функции SetPriorityClass, чтобы получать и устанавливать приоритетный класс процесса. Используйте функцию GetThreadPriority, чтобы получать приоритетную величину резьбы.

Используйте приоритетный класс процесса, чтобы различаться между приложениями, которые - время критическое и те которые имеют нормальный или ниже нормально планирующие требования. Резьба Использования приоритетных величин, чтобы различаться относительные приоритеты задач процесса. Например, резьба, которая оперирует ввод для окна могло иметь более высокий приоритетный уровень чем резьба, которая выполняет интенсивные вычисления для CPU.
Манипулируя приоритетами, быть очень осторожным, чтобы проверять, что высокоприоритетная резьба не поглощает все доступное время CPU. Резьба с базовым приоритетным уровнем над 11 создается помехи с нормальной операцией операционной системы. Использование REALTIME_PRIORITY_CLASS может вызвать дисковые кеши, чтобы не сбрасываться, зависните мышь, и так далее.

Смотри Также

GetPriorityClass, GetThreadPriority, SetPriorityClass


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz