CreateThread()
会增加包含线程入口点的DLL的引用计数,并在线程退出时减少引用计数。微软什么时候推出这个?
另外,为什么
FreeLibraryAndExitThread()
只从引用计数中减去 1,尽管它包含两个减少引用计数的操作 - FreeLibrary()
和 ExitThread()
FreeLibraryAndExitThread()
应该从引用计数中减去 2。
CreateThread
不会增加入口点的模块引用计数。但是,带有 SHCreateThread
标志的 CTF_FREELIBANDEXIT
会增加模块引用计数,MSDN 表示该标志在 Vista 及更高版本中是隐式的。 SHCreateThread
在内部调用 CreateThread
。
这意味着您可能不应该在
FreeLibraryAndExitThread
创建的线程中调用 SHCreateThread
。