在退出关联线程之前关闭线程句柄
Closing a thread handle before exiting the associated thread
这就是我想在我的代码中做的:我创建一个事件,创建一个线程。如果主线程中出现故障,我将设置事件以指示相关线程有关该故障的信息,并指示它优雅地退出相关线程。
我的问题是,它是安全的关闭线程句柄,事件设置后,而相关的线程仍在运行(试图清理和退出)?尝试立即关闭线程句柄而不等待关联线程返回的目的是为了避免使其他线程在主线程上等待直到关联线程返回。
喜悦。谢谢。
是的,它是安全的。来自CreateThread
文档:
线程对象一直保留在系统中,直到线程终止,并且通过调用
CloseHandle
关闭了对它的所有句柄。
当然,如果你关闭线程的句柄,那么你就不能再通过调用WaitForSingleObject
/WaitForMultipleObjects
来等待它了
即使在线程函数中关闭线程句柄也不是罪过,但问题是您将无法使用该线程句柄进行任何通信。另一种选择是,无论您在哪里发送事件信号,使用waitforsingleobject并等待线程句柄。当它返回时,您可以关闭句柄。
相关文章:
- 是否必须使用无限循环来有效地重用协程句柄?
- 线程1:EXC_BAD_ACCESS错误,此错误在第一行的CPP文件中的句柄函数中出现
- 打开线程并关闭多个线程句柄
- 从本机句柄创建std ::线程
- C++-SQLite3在多线程环境中泄漏句柄
- 在多线程中使用curl句柄的错误工作方法的替代方法
- 谁负责为线程句柄调用 CloseHandle()
- 获取每个线程打开的句柄数
- 如何在事件发生时启动线程并严格关闭其句柄
- 将 C# 窗口句柄传递给非托管代码 - 跨线程异常
- 为什么这个非常简单的返回 std::move(线程句柄)失败
- 提升线程 检查当前线程是否等于另一个本机句柄
- 如何从win32进程中获取线程句柄列表
- Linux:通过boost:: Thread的句柄获取线程ID
- 通过线程句柄获取线程的 TIB/TEB (2015)
- WaitForSingleObject与线程句柄卡住,同时运行regsvr32.exe
- 在退出关联线程之前关闭线程句柄
- 线程是否需要获得互斥对象的所有权才能关闭互斥对象的句柄
- 将 MFC 控件传递给线程或传递句柄
- 获取特定进程的线程句柄/id