我有一些代码如下所示。这会造成僵局吗?
private readonly object objectLock = new object();
public void MethodA()
{
lock(objectLock)
{
MethodB();
}
}
public void MethodB()
{
lock(objectLock)
{
//do something
}
}
更新:将有 2 个线程运行
最佳答案
不——但这会是:
private readonly object objectLockA = new object();
private readonly object objectLockB = new object();
public void MethodA()
{
lock(objectLockA)
{
lock(objectLockB)
{
//...
}
}
}
public void MethodB()
{
lock(objectLockB)
{
lock(objectLockA)
{
//do something
}
}
}
如果您并行调用这两个方法(从 2 个不同的线程),那么您将遇到死锁...
关于c# - 造成僵局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7835496/