2010-12-10 61 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

锁定的概念是确保在一个线程中更改资源时,其他线程在锁定释放之前不会访问它。

就你而言,你没有在两个线程之间共享任何资源,所以你不需要锁定。