Функция
TerminateThreadФункция
TerminateThread завершает работу потока.Синтаксис
TerminateThread( // код завершения для потока ); |
Параметры
hThread
[in/out] Дескриптор потока, который завершает работу.
Windows NT/2000/XP:
Дескриптор должен иметь право доступа THREAD_TERMINATE. Для получения дополнительной информации, см. статью Защита потока и права доступа.dwExitCode
[in] Код завершения работы потока. Используйте функцию
GetExitCodeThread, чтобы извлечь значение выхода потока.Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - не ноль.
Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получить дополнительные данные об ошибках, вызовите
GetLastError.Замечания
Функция
TerminateThread - используется для того, чтобы заставить поток завершить работу. Когда это происходит, у целевого потока нет возможности, чтобы исполнить какой-либо код непривилегированного (пользовательского) режима, и его исходный стек не освобождается. Динамически подключаемые библиотеки (DLL), связанные с потоком не уведомляются о том, что поток завершает работу.TerminateThread - опасная функция, которая должна быть использована только в наиболее критических случаях. Вы должны вызывать
TerminateThread, только в том случае, если знаете точно, что целевой поток делает, и Вы управляете всем кодом, который целевой поток, возможно, мог бы выполнить во время завершения. Например, TerminateThread может привести к нижеследующим проблемам:Поток не может защитить себя против
TerminateThread, не иначе как управляя доступом к своим дескрипторам. Дескриптор потока, возвращенный функциями CreateThread и CreateProcess, имеет доступ THREAD_TERMINATE, так что любая вызывающая программа, удерживающая один из этих дескрипторов может завершить работу вашего потока.Состояние объекта потока становится сигнальным, освобождая любые другие потоки, которые ждали завершения работы потока. Состояние завершения потока изменяется от
STILL_ACTIVE до значения параметра dwExitCode.Завершение работы потока необязательно удаляет объект потока из системы. Объект потока удаляется тогда, когда закрывается последний дескриптор потока.
Смотри также
Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, CreateProcess, CreateThread, ExitThread, GetExitCodeThread, OpenThread
Размещение и совместимость TerminateThread |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.1 и выше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Да |
Используемая библиотека |
Kernel32.lib |
Заголовочный файл |
|
- объявлено в |
Winbase.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |