c++ - 线程销毁时的通知

标签 c++ winapi multithreading

<分区>

有没有办法在您的应用程序中获得线程不再运行(已返回)的通知?
我知道这在内核模式下是可能的(使用 PsSetCreateThreadNotifyRoutine),但是有没有办法从用户模式下仅使用 Win32 API 来了解这一点?

问题是我无法控制线程中的代码,因为我的模块是库的一部分。制作一个驱动程序来监控系统不会太难,但即使是使用我的库的基本应用程序,用户安装驱动程序也会很烦人。

我的代码使用 TLS 存储,在 Linux/Unix 下,pthread_key_create 可以带一个指向线程被销毁时调用的函数的指针。但是 TlsAlloc (Windows) 没有这样的东西......

提前致谢!

最佳答案

取决于你有什么样的图书馆。对于 DLL 可以处理 DllMain 中的线程终止 (DLL_THREAD_DETACH)。 MSDN声明这是处理 TLS 资源的最佳位置。

请记住,此回调仅在线程干净退出时调用(而不是通过例如 TerminateThread())调用。

关于c++ - 线程销毁时的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1513040/

相关文章:

c++ - 终止在不同 QThread 中运行的 QProcess

c++ - atoi 没有给出正确的输出

c++ - 同步、线程安全接口(interface)的正确锁定模型

java - 修复线程池: pause until thread available?

c++ - 字符串存储优化

c++ - string::compare 多余的参数?

c++ - 如何以与 VBScript 相同的方式解析命令行

c++ - Win32 C/C++ 从字节数组中读取 BMP 宽度和高度

winapi - 让 NUMBERFMT 填充默认值的简单方法?

c++ - 使用来自 CreateFile 的有效句柄来自 ReadFileEx 的无效句柄错误