_endthread
, _endthreadex
Завершает поток; _endthread
завершает поток, созданный _beginthread
и _endthreadex
завершает поток, созданный с помощью _beginthreadex
.
Синтаксис
void _endthread( void );
void _endthreadex(
unsigned retval
);
Параметры
retval
Код выхода потока.
Замечания
Можно явно вызвать _endthread
или _endthreadex
, чтобы завершить поток; однако _endthread
или _endthreadex
вызываются автоматически при возврате из подпрограммы потока, переданного в качестве параметра в _beginthread
или _beginthreadex
. Завершение потока вызовом функции endthread
или _endthreadex
помогает обеспечить правильное восстановление ресурсов, выделяемых для потока.
Примечание.
Для исполняемого файла, связанного с Libcmt.lib, не вызывайте API Win32 ExitThread
. Это предотвращает восстановление выделенных ресурсов системой времени выполнения. _endthread
и _endthreadex
освобождают выделенные ресурсы потока и затем вызывают метод ExitThread
.
_endthread
автоматически закрывает дескриптор потока. (Это поведение отличается от Win32 ExitThread
API.) Поэтому при использовании _beginthread
и _endthread
не закрывайте дескриптор потока явным образом путем вызова API Win32 CloseHandle
.
Как и API Win32 ExitThread
, _endthreadex
не закрывает дескриптор потока. Поэтому при использовании _beginthreadex
и _endthreadex
необходимо закрыть дескриптор потока, вызвав функцию CloseHandle
API Win32.
Примечание.
_endthread
и _endthreadex
блокируют вызов деструкторов C++, ожидающих в потоке.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Обязательный заголовок |
---|---|
_endthread |
<process.h> |
_endthreadex |
<process.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Библиотеки
Только многопоточные версии библиотек времени выполнения языка C .
Пример
Пример см. в примере _beginthread
.