在退出关联线程之前关闭线程句柄

Closing a thread handle before exiting the associated thread

本文关键字:线程 句柄 退出 关联      更新时间:2023-10-16

这就是我想在我的代码中做的:我创建一个事件,创建一个线程。如果主线程中出现故障,我将设置事件以指示相关线程有关该故障的信息,并指示它优雅地退出相关线程。

我的问题是,它是安全的关闭线程句柄,事件设置后,而相关的线程仍在运行(试图清理和退出)?尝试立即关闭线程句柄而不等待关联线程返回的目的是为了避免使其他线程在主线程上等待直到关联线程返回。

喜悦。谢谢。

是的,它是安全的。来自CreateThread文档:

线程对象一直保留在系统中,直到线程终止,并且通过调用CloseHandle关闭了对它的所有句柄。

当然,如果你关闭线程的句柄,那么你就不能再通过调用WaitForSingleObject/WaitForMultipleObjects来等待它了

即使在线程函数中关闭线程句柄也不是罪过,但问题是您将无法使用该线程句柄进行任何通信。另一种选择是,无论您在哪里发送事件信号,使用waitforsingleobject并等待线程句柄。当它返回时,您可以关闭句柄。