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