修改临界区外的锁定对象

时间:2012-01-12 04:46:43

标签: c# .net synchronization locking

假设我有以下代码

Rectangle rect = new Rectangle();
lock(rect)
{
  ----
  ---
  ---
}

当一个线程获得锁定并在临界区执行时,可以在某个其他线程中修改rect对象或其属性。

1 个答案:

答案 0 :(得分:2)

  

可以在其他对象中修改rect对象或其属性   线程,当一个线程获得锁定并执行时   关键部分。

如果访问该对象的所有代码首先尝试获取相同的锁,则为No。

没有锁定代码包装器,那么是另一个线程可以(并且在某些时候)写入rect并且结果不一致。