如果我有这样的东西:

private readonly object objectLock = new object();

public void MethodA()
{
    lock(objectLock)
    {
      //do something
    }
}

public void MethodB()
{
    lock(objectLock)
    {
      //do something
    }
}

如果我有两个线程,并且两个线程同时进入,第一个线程调用methoda和第二个方法b。无论哪个线程先到达那里并锁定objectlock,我假设另一个线程在那里等待objectlock不再被锁定。

最佳答案

是的,您的解释是正确的——除非锁已经被取下(在这种情况下,两个线程都在等待,任意一个线程一解锁就得到锁)。
(稍微偏离主题)我建议不要锁定所有方法,如果它们正在做一些不重要的事情。尽量保持代码的“锁定”部分越小越快。

08-05 02:19