exitThread 函数 (processthreadsapi.h)
结束调用线程。
语法
void ExitThread(
[in] DWORD dwExitCode
);
parameters
[in] dwExitCode
线程的退出代码。
返回值
无
备注
ExitThread 是在 C 代码中退出线程的首选方法。 但是,在 C++ 代码中,线程先退出,然后才能调用任何析构函数或执行任何其他自动清理。 因此,在 C++ 代码中,应从线程函数返回 。
当显式 (或通过从线程过程) 返回来调用此函数时,将解除分配当前线程的堆栈,取消由未与完成端口关联的线程启动的所有挂起 I/O,并且线程将终止。 调用所有附加动态链接库的入口点函数 (DLL) ,其值指示线程正在与 DLL 分离。
如果调用此函数时线程是进程中的最后一个线程,则线程的进程也会终止。
线程对象的状态将发出信号,释放已等待线程终止的任何其他线程。 线程的终止状态从 STILL_ACTIVE 更改为 dwExitCode 参数的值。
终止线程不一定从操作系统中删除线程对象。 关闭线程的最后一个句柄时,将删除线程对象。
ExitProcess、ExitThread、CreateThread、CreateRemoteThread 函数以及由于 CreateProcess 调用 () 而启动的进程在进程中相互序列化。 一次只能在地址空间中发生其中一个事件。 这意味着存在以下限制:
- 在进程启动和 DLL 初始化例程期间,可以创建新线程,但在为进程完成 DLL 初始化之前,这些线程不会开始执行。
- 一个进程中一个线程一次只能位于 DLL 初始化或分离例程中。
- ExitProcess 在 DLL 初始化或分离例程中没有线程之前不会返回。
使用 GetExitCodeThread 函数检索线程的退出代码。
Windows Phone 8.1:Windows Phone 8.1 及更高版本上的 Windows Phone 应用商店应用支持此函数。
Windows 8.1和 Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更高版本的 Windows 应用商店应用支持此函数。
示例
有关示例,请参阅 使用事件对象。
要求
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | processthreadsapi.h (包括 Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib;Windows Phone 8.1 上的 WindowsPhoneCore.lib |
DLL | Kernel32.dll;Windows Phone 8.1 上的 KernelBase.dll |