_endthread_endthreadex

终止线程;_endthread 终止由 _beginthread 创建的线程,_endthreadex 终止由 _beginthreadex 创建的线程。

语法

void _endthread( void );
void _endthreadex(
   unsigned retval
);

参数

retval
线程退出代码。

注解

可以显式调用 _endthread_endthreadex 终止线程;但是,当线程从作为 _endthread_endthreadex 参数传递的例程中返回时,会自动调用 _beginthread_beginthreadex。 通过对 endthread_endthreadex 的调用来终止线程有助于确保适当恢复为线程分配的资源。

注意

对于与 Libcmt.lib 链接的可执行文件,请不要调用 Win32 ExitThread API;这将阻止运行时系统回收已分配的资源。 _endthread_endthreadex 回收分配的线程资源,然后调用 ExitThread

_endthread 会自动关闭线程句柄。 (此行为不同于 Win32 ExitThread API。)因此,在使用 _beginthread_endthread 时,请勿通过调用 Win32 CloseHandle API 来显式关闭线程句柄。

与 Win32 ExitThread API 相同,_endthreadex 不会关闭线程句柄。 因此,当你使用 _beginthreadex_endthreadex时,必须通过调用 Win32 CloseHandle API 来关闭线程句柄。

注意

_endthread_endthreadex 会导致 C++ 析构函数在不会调用的线程中处于挂起状态。

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

函数 必需的标头
_endthread <process.h>
_endthreadex <process.h>

有关兼容性的详细信息,请参阅 兼容性

仅限 C 运行库 的多线程版本。

示例

请参阅 _beginthread 的示例。

另请参阅

进程和环境控制
_beginthread_beginthreadex