_endthread、_endthreadex
终止线程;_endthread 终止由 _beginthread 创建的线程,_endthreadex 终止由 _beginthreadex 创建的线程。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。有关详细信息,请参阅 /ZW 不支持 CRT 函数。
void _endthread( void ); void _endthreadex( unsigned retval );
参数
- retval
线程退出代码。
备注
可以显式调用 _endthread 或 _endthreadex 终止线程;但是,当线程从作为 _beginthread 或 _beginthreadex 参数传递的例程中返回时,会自动调用 _endthread 或 _endthreadex。 通过对 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++ 析构函数在不会调用的线程中处于挂起状态。
要求
函数 |
必需的标头 |
---|---|
_endthread |
<process.h> |
_endthreadex |
<process.h> |
有关更多兼容性信息,请参阅兼容性。
库
仅限 C 运行库的多线程版本。
示例
请参阅 _beginthread 示例。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例。