1

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

作为概括,每个哲学家都可能先拿“他左边”的叉子,导致他们每个人都在等待另一个叉子被释放,这永远不可能发生。

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

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

提前致谢!

4

1 回答 1

0

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

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

于 2021-04-13T02:26:44.257 回答