由於Java 5,volatile
關鍵字發佈/收購語義使副作用可見於其他線程(包括分配到非易失性變量!)。以這兩個變量,例如:揮發與釋放/收購語義
int i;
volatile int v;
注意i
是有規律的,非易失性變量。試想一下,線程1執行以下語句:
i = 42;
v = 0;
在稍後的某個時間點,線程2執行以下語句:
int some_local_variable = v;
print(i);
根據Java內存模式,v
在線程1寫然後在線程2中讀取v
確保線程2看到在線程1中執行的寫入i
,因此打印值42。
我的問題是:是否volatile
在C#中具有相同的發佈/獲取語義?
不完全;見http://blogs.msdn.com/b/ericlippert/archive/2011/06/16/atomicity-volatility-and-immutability-are-different-part-three.aspx –