• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACG狂人

            其實我更愛姐汁...

            DLL的共享測試

            今天稍微實驗了一下DLL的數據共享問題,做了兩種情況下的測試,第一種是兩個進程同時調用一個DLL的實驗,另一種是一個進程調用一個兩個DLL,然后這兩個DLL有依賴關系,記錄一下得到的測試結果。

            當一個進程調用LoadLibrary、LoadLibraryEx以及FreeLibrary時,DllMain會被調用,從DllMain的入口函數的第二個參數可以得知是加載還是釋放。LoadLibraryEx的flag參數傳入DONT_RESOLVE_DLL_REFERENCES可以跳過DllMain的調用,這在很多時候是有用的。
            當一個進程在調用LoadLibrary后又啟動了線程,則每啟動一個線程,就會調用一次DllMain,同樣可以從DllMain的第二個參數的值來區分調用時由進程引起的還是由線程引起的。第二個參數的值一般有4種,如下:
             DLL_PROCESS_ATTACH
             DLL_PROCESS_DETACH
             DLL_THREAD_ATTACH
             DLL_THREAD_DETACH
            不用解釋也能看得出來分別是表示什么意義了,通過這個可以選擇性的對DLL中的數據進行初始化。
            如果是兩個進程同時調用一個DLL的話,數據是不會共享的,除非你設置了seg項為共享,具體不同的編譯器會有不同的設置方法。兩個進程對同一個DLL的調用計數也是分開的,這讓我很放心了,之前一直害怕的沖突問題釋然。


            當一個進程去調用一個DLL甲,而甲又在初始化的時候調用了DLL乙,進程通過甲的函數來訪問了DLL乙,同時自己也親自調用了DLL乙并取出和更改了數據。這樣的情況下,DLL乙的引用計數是共享的,數據也是共享的,加載和釋放都很安全,之前擔心DLL乙中的單件會被重復調用的情況也不可能存在了。

            posted on 2009-06-27 23:04 釀妹汁 閱讀(569) 評論(0)  編輯 收藏 引用 所屬分類: 備忘

            久久精品无码一区二区三区免费| 亚洲va久久久噜噜噜久久狠狠 | 国产成人久久精品区一区二区| 亚洲va久久久噜噜噜久久男同| 久久综合丝袜日本网| 色99久久久久高潮综合影院| 99精品久久精品一区二区| 久久er热视频在这里精品| 97香蕉久久夜色精品国产| 久久国产色AV免费观看| 欧美久久久久久午夜精品| 热re99久久精品国99热| 欧美精品福利视频一区二区三区久久久精品 | 国产69精品久久久久APP下载| 国产成人精品免费久久久久| 久久综合久久综合亚洲| 久久久久久a亚洲欧洲aⅴ| 亚洲综合伊人久久大杳蕉| 久久嫩草影院免费看夜色| 精品一区二区久久| 亚洲色欲久久久综合网东京热| 国产99久久久久久免费看 | 久久精品国产亚洲av高清漫画| 色婷婷久久久SWAG精品| 精品久久久久久综合日本| 久久婷婷五月综合国产尤物app| 亚洲国产一成久久精品国产成人综合 | 国产精品嫩草影院久久| 国产亚洲欧美成人久久片| 久久人人妻人人爽人人爽| 色综合久久久久久久久五月| 国产精品99久久久精品无码| 久久婷婷五月综合色奶水99啪| 久久福利资源国产精品999| 亚洲伊人久久综合中文成人网| 人妻精品久久久久中文字幕 | 无码AV波多野结衣久久| 99久久国产宗和精品1上映| 亚洲av成人无码久久精品| 亚洲精品无码久久久久久| 久久久久久久人妻无码中文字幕爆|