Функция SwitchToThread (processthreadsapi.h)
Позволяет вызвавшему потоку передать выполнение другому потоку, готовому к использованию на текущем процессоре. Операционная система выбирает следующий поток для выполнения.
Синтаксис
BOOL SwitchToThread();
Возвращаемое значение
Если вызов функции SwitchToThread вызвал переключение выполнения операционной системы на другой поток, возвращаемое значение будет ненулевым.
Если нет других потоков, готовых к выполнению, операционная система не переключает выполнение в другой поток, а возвращаемое значение равно нулю.
Комментарии
Результат выполнения действует для одного среза времени планирования потока на процессоре вызывающего потока. Операционная система не переключит выполнение на другой процессор, даже если этот процессор простаит или выполняет поток с более низким приоритетом.
По истечении среза времени возвращающего потока операционная система перепланирует выполнение возвращающего потока. Перепланирование определяется приоритетом возвращающего потока и состоянием других потоков, доступных для запуска.
Обратите внимание, что операционная система не переключается на поток, запуск которых запрещен только с помощью управления параллелизмом. Например, порт завершения ввода-вывода или пул потоков ограничивает количество связанных потоков, которые могут выполняться. Если максимальное количество потоков уже запущено, дополнительный связанный поток не может выполняться до завершения выполняющегося потока. Если поток использует SwitchToThread для ожидания выполнения какой-то работы одним из дополнительных связанных потоков, процесс может быть взаимоблокировкой.
Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0400 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | processthreadsapi.h (включая Windows.h в Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |