我有一些代码如下所示。这样会造成死锁吗?
private readonly object objectLock = new object();
public void MethodA()
{
lock(objectLock)
{
MethodB();
}
}
public void MethodB()
{
lock(objectLock)
{
//do something
}
}更新:将有2个线程运行
发布于 2011-10-20 11:52:48
不,这不是僵局。它对同一个同步对象具有相同的线程锁定。线程可以接受嵌套锁。它只需要释放它等于不。时间的流逝。
发布于 2011-10-20 11:57:39
不-但这会是:
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
}
}
}如果并行调用这两个方法(来自两个不同的线程),则会出现死锁.
发布于 2011-10-20 11:52:42
不,您需要两个锁对象来启用死锁。
https://stackoverflow.com/questions/7835496
复制相似问题