Уровень приоритета


Нижеследующее - уровни приоритета внутри каждого класса приоритета:

THREAD_PRIORITY_IDLE

THREAD_PRIORITY_LOWEST

THREAD_PRIORITY_BELOW_NORMAL

THREAD_PRIORITY_NORMAL

THREAD_PRIORITY_ABOVE_NORMAL

THREAD_PRIORITY_HIGHEST

THREAD_PRIORITY_TIME_CRITICAL

Все потоки создаются с использованием THREAD_PRIORITY_NORMAL. Это означает, что приоритет потока тот же самый, что и класс приоритета процесса. После того, как Вы создали поток, используете функцию SetThreadPriority, чтобы откорректировать его приоритет относительно других потоков в процессе.

Типичная стратегия состоит в том, чтобы для потока ввода данных процесса использовать THREAD_PRIORITY_ABOVE_NORMAL или THREAD_PRIORITY_HIGHEST, гарантируя этим, что прикладная программа быстро отреагирует на действия пользователя. Фоновые потоки, особенно те, которые являются интенсивным процессором, могут быть установлены в THREAD_PRIORITY_BELOW_NORMAL или THREAD_PRIORITY_LOWEST, гарантируя этим, что, когда необходимо, они могут выгружаться (резервироваться). Однако если у Вас есть поток, ожидающий другой поток с более низким приоритетом, когда тот завершит некоторую задачу, убедитесь, что заблокировали исполнение ожидающего высокоприоритетного потока. Чтобы сделать это, используйте wait function (функции ожидания), critical section (критическую секцию программы), или функцию Sleep, SleepEx, или функцию SwitchToThread. Это предпочтительнее, чем заставлять поток работать в цикле. В противном случае, процесс может стать заблокированным, потому что поток с более низким приоритетом никогда не будет допущен к работе с процессором.

Чтобы установить текущий приоритетный уровень потока, используйте функцию GetThreadPriority.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz