导体解决方案给哲学家晚餐

时间:2013-03-28 00:16:17

标签: algorithm concurrency dining-philosopher

所描述的哲学家晚餐问题的指挥解决方案表明,使用了四个尺寸的四分之一,并且所有哲学家都试图在右叉之前得到左叉。 http://en.wikipedia.org/wiki/Dining_philosophers_problem#Conductor_solution

信号量是否应该用于访问左叉的每个人以及每个人访问右叉?

哲学家如果能够得到左叉而不是在指定时间内得到正确的叉子,应该怎么做?他们应该让左叉回来吗?

哲学家回归的顺序是否重要?

这种解决方案肯定会导致饥饿。例如,维基说A和C都有两个叉子。这意味着信号量将不再向任何人说出分叉并挂到第五个。 D和E之间的叉子必须留在桌子上。然后说A返回他的右叉。

现在信号量将回到3。

D可以再次尝试左叉,然后意识到他不能正确。 B只能离开。再没有用。

A可能会尝试再次选择正确的叉子,因为他已经离开了他的左边。这意味着我们绕圈子走了。

我错过了什么

帮助?

1 个答案:

答案 0 :(得分:1)

我相信哲学家总是“同时”回归两个问题。通过要求哲学家获得左叉然后右叉来进一步简化问题。锁定获取顺序确实有助于简化死锁问题。遵循导体方案将保证死锁是不可能的。

这里的额外伎俩是服务员要求5位哲学家中只有4位可以同时拥有叉子(所以它更像是计数信号量,计算哲学家不是叉子)。