所描述的哲学家晚餐问题的指挥解决方案建议使用大小为 4 的信号量,并且所有哲学家都尝试在右叉之前先获得左叉。 http://en.wikipedia.org/wiki/Dining_philosophers_problem#Conductor_solution
信号量是否应该用于访问左叉的每个人和访问右叉的每个人?
如果一个哲学家可以在规定的时间内得到左叉但没有得到右叉,他应该怎么做?他们应该把左叉还给吗?
哲学家按什么顺序返回叉子有关系吗?
当然,这种解决方案仍然会导致饥饿。例如,wiki 说 A 和 C 都有两个分叉。这意味着信号量将不再对任何人说分叉并挂在第五个。D 和 E 之间的叉子必须留在桌子上。然后说A返回他的右叉。
现在信号量将回到 3。
D 可以再试一次左叉,然后意识到他不能正确。B只能离开。又没用。
A 可以尝试再次选择右叉,因为他已经有了左叉。这意味着我们绕着圈子转。
我错过了一些东西
帮助?