2010-12-10 60 views
0

的問題是容易的,假設我有:C#線程鎖定一類的2場

class MyClass 
{ 
    object myObj1 
    object myObj2 
} 

Thread1(MyClass c) 
{ 
    DoALotOnMyObj1(c.myObj1); 
} 

Thread2(MyClass c) 
{ 
    DoALotOnMyObj2(c.myObj2); 
} 

我必須在這種情況下使用鎖,即使我完全確信這兩個線程將使用只有myObj1(或2取決於線程),而不是其他領域?

+1

這是一個錯字嗎?線程2是否應該在執行`DoALotOnMyObj2(c.myObj2);`而不是? – LukeH 2010-12-10 00:23:20

回答

3

不,你不會。

1

鎖定的概念是確保在一個線程中更改資源時,其他線程在鎖定釋放之前不會訪問它。

就你而言,你沒有在兩個線程之間共享任何資源,所以你不需要鎖定。