所以我知道 CreateThread 和 CRT 会导致内存泄漏,信号不起作用,应该使用 _beginthread 或 _beginthreadex 函数。
在编写应用程序时这一切都很好,但是那些正在为其他应用程序编写 dll 的人呢(无论是普通的 c dll、com 对象、插件等)。无法保证调用 DLL 的线程是如何创建的,即使他们使用 __beginthread(ex) 也很可能打赌他们有不同的 CRT 实现\版本。
那么程序员到底应该做什么呢?不使用CRT?生成一个内部线程并将所有工作卸载到该线程(不使用 CRT 和调用线程)?DllMain 和附加/分离东西的一些技巧可以正确设置和关闭所有线程,无论它们是如何创建的?