【问题标题】:What is the process to create a Deadlock?创建死锁的过程是什么?
【发布时间】:2016-03-31 20:07:15
【问题描述】:

我在 StackOverflow 上看到了很多关于如何创建死锁的答案,但都是编写的代码。 我希望以更简单的方式理解。我想知道您将采取哪些步骤来重新创建此死锁。我不是在寻找代码,而是在寻找更多步骤。 Traffic Deadlock

感谢您的宝贵时间。 抱歉链接图片,我需要 10 声望才能发布图片。

【问题讨论】:

    标签: algorithm memory operating-system traffic


    【解决方案1】:

    最简单的方法 - 进程 A 必须等待 进程 B 先完成,以便 A 完成它的工作(让我们假设 A 需要 B 的输出来进行自己的一些计算),同样的事情发生在 B 中:它必须等待输出进程 A 以完成自身。

    我希望这对你来说已经足够清楚了。由于您明确要求不提供代码,因此我不会编写任何代码,因为找到死锁代码可能太容易了。但基本上,它与汽车相互阻挡的图片中的相似。

    【讨论】:

      【解决方案2】:

      死锁中的“锁”来自于锁定文件或数据库表的能力,以防止多个进程同时更新同一个文件/表。

      例如,进程 1 锁定表 A,进程 2 锁定表 B。如果进程 1 也想更新表 B,但发现它被锁定,则它必须等待进程 2 释放它。如果进程 2 必须更新表 A,它也会被锁定。

      这种情况是一个死锁,两个进程都在等待对方释放它们的锁。

      【讨论】:

        【解决方案3】:

        我们都有一块牛排要吃,但我们的银器不足。

        我有叉子可以吃,但你只有一把刀,所以我得等你吃完才能切肉。

        你有一把刀可以用来切它,但我只有唯一的叉子,所以你必须等到我完成后才能抓住叉子按住它。

        看来我们要挨饿了。这是一个僵局。

        标准的解决方案是确保如果有人同时需要一把刀和一把叉子,那么他们必须先拿起叉子。

        【讨论】:

          猜你喜欢
          • 2010-09-07
          • 2013-11-27
          • 1970-01-01
          • 1970-01-01
          • 2012-09-12
          • 1970-01-01
          • 1970-01-01
          • 2014-08-27
          • 1970-01-01
          相关资源
          最近更新 更多