Функция SuspendThread (processthreadsapi.h)
Приостанавливает указанный поток.
64-разрядное приложение может приостановить поток WOW64 с помощью функции Wow64SuspendThread .
Синтаксис
DWORD SuspendThread(
[in] HANDLE hThread
);
Параметры
[in] hThread
Дескриптор для приостанавливаемого потока.
Дескриптор должен иметь право доступа THREAD_SUSPEND_RESUME . Дополнительные сведения см. в разделе Безопасность потоков и права доступа.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение — это предыдущее число приостановок потока; В противном случае — (DWORD) -1
. Чтобы получить расширенные сведения об ошибке, используйте функцию GetLastError .
Комментарии
Если функция выполняется успешно, выполнение указанного потока приостанавливается, а число приостановок потока увеличивается. Приостановка потока приводит к тому, что поток перестает выполнять код в пользовательском режиме (приложение).
Эта функция в основном предназначена для использования отладчиками. Он не предназначен для синхронизации потоков. Вызов SuspendThread в потоке, который владеет объектом синхронизации, например мьютексом или критическим разделом, может привести к взаимоблокировке, если вызывающий поток попытается получить объект синхронизации, принадлежащий приостановленным потоком. Чтобы избежать этой ситуации, поток в приложении, который не является отладчиком, должен сигнализировать другому потоку о приостановке себя. Целевой поток должен быть разработан таким образом, чтобы watch для этого сигнала и реагировать соответствующим образом.
Каждый поток имеет число приостановок (с максимальным значением MAXIMUM_SUSPEND_COUNT). Если число приостановок больше нуля, поток приостанавливается; В противном случае поток не приостанавливается и может выполняться. Вызов SuspendThread приводит к тому, что число приостановок целевого потока увеличивается. Попытка увеличить максимальное число приостановок приводит к ошибке без увеличения счетчика.
Функция ResumeThread уменьшает количество приостановлений приостановленного потока.
Windows Phone 8.1. Эта функция поддерживается для приложений магазина Windows Phone в Windows Phone 8.1 и более поздних версиях.
Windows 8.1 и Windows Server 2012 R2. Эта функция поддерживается для приложений Магазина Windows на Windows 8.1, Windows Server 2012 R2 и более поздних версиях.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | processthreadsapi.h (включая Windows.h в Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Библиотека | Kernel32.lib; WindowsPhoneCore.lib в Windows Phone 8.1 |
DLL | Kernel32.dll; KernelBase.dll Windows Phone 8.1 |