当从应用程序全局调用时,线程的 WaitForSingleObject 冻结

WaitForSingleObject for a thread freezes when called from application globals

我创建了一个线程作为某个池的一部分,需要在应用程序(实际上是 DLL)完成时销毁。所以我有一些“全局变量”,意思是一个全局静态实例化的结构,在析构函数中它释放任何创建的线程并使用 WaitForSingleObject 等待它们。不幸的是,这会永远冻结,并且在调试器中检查会发现线程仍然存在,只是卡在系统 DLL 中的某个地方。当我在全局变量被释放之前调用它时,一切都会顺利进行。我在 Win32 文档中没有看到任何提及。有什么想法吗?

所以解决方案确实是避免等待,实际上释放 DllMain 中的任何东西(包括全局变量)都是不好的,所以需要先释放所有重要的东西。当涉及到 DLL 时,这有时有点棘手,但是...