2013-01-23 97 views

回答

2

如果r保持不變對象遍及 - 例如,rList你是從多個線程添加項目:

lock (r) 
{ 
    r.Add("Hello world"); 
} 

那麼,這是好的 - 它不會引起任何問題,你可以閱讀它,因爲你特別「鎖定r」。 (只要確保你把一個類似lock各地目前正使用r過任何其他代碼。)

但是,如果r正在切換爲另一對象lock內:

lock (r) 
{ 
    r = new List<string>(); 
} 

ISN」 t是一個好主意,因爲最終可能會有兩個線程針對r的兩個不同版本運行lock。在這種情況下,您應該創建一個不變的object專門用於鎖定 - 與「鎖定r」相比,您更「鎖定代碼塊」。