我有一个关于锁的简单问题。 Process1和Process2是否相同,因为它们最终会锁定LongProcess? 谢谢。
private static readonly object _Locker = new object();
public void Process1()
{
lock(_LockerA){
LongProcess()
}
}
public void Process2()
{
if(curType == A)
ProcessTypeA();
else if(curtype == B)
ProcessTypeB();
}
private static readonly object _LockerA = new object();
public void ProcessTypeA()
{
lock(_LockerA){
LongProcess()
}
}
private static readonly object _LockerB = new object();
public void ProcessTypeB()
{
lock(_LockerB){
LongProcess()
}
}
public void LongProcess()
{
}
答案 0 :(得分:0)
Process2
curtype == 'b'
的情况下,锁使用_LockerB
对象。如果尝试使用_LockerA
对象的其他锁之一,则允许他们输入LongProcess
。
答案 1 :(得分:0)
Process1
和Process2
有可能锁定同一个对象,但它们肯定不相同。但是,在Process1
调用{Process2
的情况下,同一个调用堆栈中也允许对同一个对象进行锁定(我认为很少,如果必须这样做)(也称为递归锁定) {1}})。这可能更好地描述为依赖锁定。
然而,你的问题相当含糊,所以你必须详细说明相同的 ...