Поделиться через


Функция 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

См. также раздел

OpenThread

Функции процессов и потоков

ResumeThread

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

Потоки