如果我有这样的东西:
private readonly object objectLock = new object();
public void MethodA()
{
lock(objectLock)
{
//do something
}
}
public void MethodB()
{
lock(objectLock)
{
//do something
}
}
如果我有两个线程,并且两个线程同时进入,第一个线程调用methoda和第二个方法b。无论哪个线程先到达那里并锁定objectlock,我假设另一个线程在那里等待objectlock不再被锁定。
最佳答案
是的,您的解释是正确的——除非锁已经被取下(在这种情况下,两个线程都在等待,任意一个线程一解锁就得到锁)。
(稍微偏离主题)我建议不要锁定所有方法,如果它们正在做一些不重要的事情。尽量保持代码的“锁定”部分越小越快。