C#中的字符串是不可變的並且是線程安全的。但是當你有一個公共的getter屬性時呢?就像這樣:字符串屬性本身是否是線程安全的?
public String SampleProperty{
get;
private set;
}
如果我們有兩個線程,第一個是叫「弄」,並在「相同」的時間,二是呼籲「設置」,會發生什麼?
恕我直言集必須做出一個鎖是線程安全的是這樣的:保證是原子,所以有
private string sampleField;
private object threadSafer = new object();
public String SampleProperty{
get{ return this.sampleField; }
private set{
lock(threadSafer){
sampleField = value;
}
}
}
「要求」是:所有使用(讀取)屬性的線程必須具有相同/最新的值。但只有對象本身修改了這個值。 關鍵字'揮發性'應該保證這一點,或不? – TomTom 2009-01-12 10:37:53