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


_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.

См. также

Управление процессами и средой
_beginthread, _beginthreadex