【问题标题】:Deadlock in dining philosophers with channels from Ben Ari?与 Ben Ari 的频道就餐哲学家陷入僵局?
【发布时间】:2021-05-04 11:35:56
【问题描述】:

在 Ben Ari 的《并发和分布式编程原理》(第 2 版)第 8.4 章,用通道吃饭的哲学家中,他们提出了一个我认为可能导致死锁的解决方案。 假设哲学家 3 拿了叉子 3。然后哲学家必须拿第四叉子吃饭。但是第四个叉子可能会被第四个哲学家拿走。

一般来说,每个哲学家都可能先拿“他左边”的叉子,结果他们每个人都在等待另一个叉子被释放,这永远不可能发生。

是我遗漏了什么,还是这个解决方案不完整?

在关于信号量的章节中,也发生了类似的事情,但作者提出了一种替代解决方案来缓解死锁情况。例如,可以添加一个限制,以便一位哲学家首先在其他人的另一侧分叉,从而避免死锁。我认为这可能是一个可能的解决方案,但我想在这里与其他人确认。

提前致谢!

【问题讨论】:

    标签: concurrency dining-philosopher


    【解决方案1】:

    是我遗漏了什么,还是这个解决方案不完整?

    我绝对没有遗漏任何东西:我与在我的大学教授这本书的教授确认,这种解决方案确实会导致僵局。

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2022-12-29
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2016-03-04
      • 1970-01-01
      相关资源
      最近更新 更多