现在的位置: 首页 > 综合 > 正文

[Windows编程] 开发DLL必读《Best Practices for Creating DLLs》

2013年12月04日 ⁄ 综合 ⁄ 共 447字 ⁄ 字号 评论关闭

开发DLL的时候,需要十分注意 DllMain 函数,因为在多线程环境下DLLMain里面的代码很容易引发线程死锁。 这篇MSDN文章《Best Practices for Creating DLLs》深入讨论了开发DLL的时候应该注意哪些事项, 非常推荐。

 

简单来说,系统在装载DLL 的时候会自动产生一个Loader Lock, 避免多个DLL同时被装载。 LoaderLock从API函数LoadLibrary调用的开始就自动加锁, 直到DllMain 退出为止。 常见到一些开发者喜欢在DllMain 里面写大量的初始化代码(比如 CoInitializeEx, LoadLibraryEx,CreateProces ,创建线程,同步线程 等等..),这些初始化代码很容易产生其他的lock,进而导致进程死锁。

 

Loader Lock 示意图:

 

 

死锁的一个例子:

 

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/WinGeek/archive/2009/06/03/4237703.aspx

【上篇】
【下篇】

抱歉!评论已关闭.