Функция TerminateThread

Функция TerminateThread завершает работу потока.

Синтаксис

BOOL TerminateThread(

HANDLE hThread// дескриптор потока

DWORD dwExitCode // код завершения для потока

);

Параметры

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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz