新闻动态
【未来虫教育】终止线程
发布日期:2025-04-15 09:00:50 点击次数:126
①线程函数返回:保证线程的所有资源都被正确清理的唯一方式
③ ExitThread 函数杀死自己(避免)
④ TerminateThread(避免)
⑤ 线程所属的进程终止运行(避免)
线程函数返回时发生如下:
① C++ 对象通过其析构函数被正确销毁
② OS 正确释放线程栈使用的内存
③ OS 把线程的退出代码设为线程函数的返回值
④ 系统减少线程的内核对象的引用计数
VOID ExitThread(DWORD dwExitCode);
此函数将终止线程的运行,并导致 OS 清理该线程使用的所有 OS 资源,但是 C/C++ 资源 (如 C++ 类对象) 不会被销毁,因为其析构函数没有机会执行。
与 ExitThread 函数类似的 C/C++ 运行库函数为_endthreadex 函数。
BOOL TerminateThread(
HANDLE hThread, // 线程句柄
DWORD dwExitCode // 退出代码
该函数可以杀死任何线程,该函数为异步的,就是说该函数返回时,其所终止的线程并不一定已经终止,如果要确定该线程是否终止,可以使用 WaitForSingleObject 或类似函数来确定。
发布于:湖南省
