首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建死锁

创建死锁
EN

Stack Overflow用户
提问于 2011-10-20 11:50:03
回答 5查看 1.4K关注 0票数 4

我有一些代码如下所示。这样会造成死锁吗?

代码语言:javascript
复制
private readonly object objectLock = new object();

public void MethodA()
{
    lock(objectLock)
    {
       MethodB();
    }
}

public void MethodB()
{
    lock(objectLock)
    {
      //do something
    }
}

更新:将有2个线程运行

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-20 11:52:48

不,这不是僵局。它对同一个同步对象具有相同的线程锁定。线程可以接受嵌套锁。它只需要释放它等于不。时间的流逝。

票数 6
EN

Stack Overflow用户

发布于 2011-10-20 11:57:39

不-但这会是:

代码语言:javascript
复制
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
    }
    }
}

如果并行调用这两个方法(来自两个不同的线程),则会出现死锁.

票数 11
EN

Stack Overflow用户

发布于 2011-10-20 11:52:42

不,您需要两个锁对象来启用死锁。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7835496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档