[Windows編程] 開發DLL必讀《Best Practices for Creating DLLs》
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
開發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 示意圖:
死鎖的一個例子:

RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成


RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成