如果我有这样的东西:
private readonly object objectLock = new object();
public void MethodA()
{
lock(objectLock)
{
//do something
}
}
public void MethodB()
{
lock(objectLock)
{
//do something
}
}
如果我有 2 个线程并且同时进入,第一个线程调用 MethodA 和第二个方法 B。先到达那里并锁定 objectLock,我假设另一个线程坐在那里等待 objectLock 不再被锁定。
最佳答案
是的,你的解释是正确的——除非锁已经被占用(在这种情况下,两个线程都在等待,并且任意一个线程在解锁后立即获得锁)。
(稍微偏离主题)如果它们正在做一些重要的事情,我建议不要锁定整个方法。尽量使代码的“锁定”部分尽可能小和快。
关于c# - 多个代码块被同一个对象锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7834551/