新闻动态
【未来虫教育】终止线程
发布日期: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 或类似函数来确定。

发布于:湖南省
友情链接: