void _endthread( void );
void _endthreadex( unsigned retval );
参数:
retval( 线程的退出码)
功能 | 必需的标头 |
---|---|
_endthread | <process.h> |
_endthreadex | <process.h> |
_endthread, _endthreadex分别停止 _beginthread 或 _beginthreadex创建的线程,
备注
可以显式调用 _endthread 或 _endthreadex 终止线程;但是,那么,当线程从线程函数返回到 _beginthread 或 _beginthreadex时,_endthread 或 _endthreadex 会自动调用。 停止点与线程调用endthread 或 _endthreadex 有助于确保为线程分配的资源适当的恢复。
对于使用 Libcmt.lib 链接的可执行文件,不要调用 Win32 API; ExitThread 这样可防止该运行时系统恢复已分配的资源。_endthread 和分发 _endthreadex 回收线程资源然后调用 ExitThread。
_endthread 自动关闭线程句柄。 (此行为与 Win32 API ExitThread 不同。)因此,那么,当您使用 _beginthread 和 _endthread时,不要通过调用 Win32 API CloseHandle 显式关闭线程句柄。
与 Win32 ExitThread API 相比_endthreadex 不会自动关闭线程句柄。 因此,那么,当您使用 _beginthreadex 和 _endthreadex时,必须通过调用 Win32 API CloseHandle 关闭线程处理。
注意
_endthread 和 _endthreadex 显示调用会导致在线程挂起的 C++ 析构函数不调用。