Приоритеты потоков

Приоритет Назначение
THREAD_PRIORITY_ABOVE_NORMAL Приоритет на 1 пункт выше класса приоритета.
THREAD_PRIORITY_BELOW_NORMAL Приоритет на 1 пункт ниже класса приоритета.
THREAD_PRIORITY_HIGHEST Приоритет на 2 пункта выше класса приоритета.
THREAD_PRIORITY_IDLE Базовый приоритет 1 для процессов IDLE_PRIORITY_CLASS, BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, ABOVE_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, BELOW_NORMAL_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS, ABOVE_NORMAL_PRIORITY_CLASS или HIGH_PRIORITY_CLASS и уровень базового приоритета 31 для процессов REALTIME_PRIORITY_CLASS.

Завершение потока:

Поток можно завершить четырьмя способами:

1. функция потока возвращает управление (рекомендуемый способ);

2. поток самоуничтожается вызовом функции ExitThread (нежелательный способ);

3. один из потоков данного или стороннего процесса вызывает функцию TerminateThread (нежелательный способ);

4. завершается процесс, содержащий данный поток (тоже нежелательно).

Явный вызов ExitThread и TerminateThread нежелателен, т.к. процесс продолжает работать, но при этом весьма вероятна утечка памяти или других ресурсов.

 

Возврат управления функцией потока

При этом:

- любые С++-объекты, созданные данным потоком, уничтожаются соответствующими деструкторами;

- система корректно освобождает память, которую занимал стек потока;

- система устанавливает код завершения данного потока (поддерживаемый объектом ядра "поток”) –его и возвращает Ваша функция потока;

- счетчик пользователей данного объекта ядра "поток" уменьшается на 1.