原因涉及DLL加載和運行機制,主要有兩點:
1)DLL動態鏈接庫無法獨立運行,必須由一個應用程序進程加載到進程空間后才能使用。加載DLL的進程稱為宿主進程。被加載的DLL屬於宿主進程,不屬於宿主進程內某個線程。
2)宿主進程可以重復調用,甚至重復加載DLL。第1次調用DLL或第1次加載DLL時,宿主進程將DLL引入進程空間。一旦宿主進程成功加載DLL,隨后的重復調用或重復加載只會增加“引用計數”,而不會加載多份DLL,所以進程中只有一份DLL。
所以全局變量可能會引起多線程同步問題。
原因涉及DLL加載和運行機制,主要有兩點:
1)DLL動態鏈接庫無法獨立運行,必須由一個應用程序進程加載到進程空間后才能使用。加載DLL的進程稱為宿主進程。被加載的DLL屬於宿主進程,不屬於宿主進程內某個線程。
2)宿主進程可以重復調用,甚至重復加載DLL。第1次調用DLL或第1次加載DLL時,宿主進程將DLL引入進程空間。一旦宿主進程成功加載DLL,隨后的重復調用或重復加載只會增加“引用計數”,而不會加載多份DLL,所以進程中只有一份DLL。
所以全局變量可能會引起多線程同步問題。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。