⓪編著: 蕭沖

我們知道dll最主要的用途就是在於程式碼共享。而共享的過程中又會演生出全域資料(變數)是否共享的問題。

在多個process間共用同一個dll時,變數的共享與否是靠二個機制:
1/ 不共享全域變數 : 使用copy-on-write的觀念來處理  ( windows 系統自動預設是如此)
2/ 共享全域變數: 我們可以透過把變數放入一個share的segment的記憶體區段內,然後process間就可以共用。



在同一個process裡,多個「相同」thread共用一個dll的程式碼時的變數共享問題:
1/ 預設的情形下,任意的thread都可以共享取用該dll裡的全域變數。
2/ 若要不共享該dll裡的全域變數,則要考TLS (thread local storage)機制。

創作者介紹
創作者 aftcast 的頭像
aftcast

蕭沖的書房

aftcast 發表在 痞客邦 留言(2) 人氣()