Приостановка выполнения потока

Поток может приостановить и возобновить выполнение другого потока. Пока поток приостанавливается, он не планируется на время на процессоре.

Если поток создается в приостановленном состоянии (с флагом CREATE_SUSPENDED ), он не начинает выполняться, пока другой поток не вызовет функцию ResumeThread с дескриптором приостановленного потока. Это может быть полезно для инициализации состояния потока перед его выполнением. Приостановка потока при создании может быть полезна для однократной синхронизации, так как это гарантирует, что приостановленный поток будет выполнять начальную точку своего кода при вызове ResumeThread.

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

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

Функция SwitchToThread аналогична функции Sleep и SleepEx, за исключением того, что вы не можете указать интервал. SwitchToThread позволяет потоку отказаться от своего временного среза.