制片人/消费者和读者/作家很容易想到,但是餐饮哲学家怎么样?在什么样的情况下,N个进程和N个资源将在环形拓扑上相互交错?我可以想到N个进程竞争M资源,但在这种情况下,每个进程可以使用任何两个资源。
wiki说Dijkstra用它来模拟竞争磁带机外围设备的计算机。这种情况在现代仍然存在吗?
答案 0 :(得分:2)
我发现在两个账户之间执行交易的问题非常类似于餐饮哲学家的问题。为了执行交易,线程必须锁定两个账户,以确保从一个账户中扣除正确的价值(首先确保有可用的资金)并贷记给另一个账户。
拓扑不完全是圆桌会议,但非常接近。想象一下桌上的5个账户。在这个类比中,帐户是分叉。任何两个帐户都可以参与交易。交易==哲学家。所以在这个例子中,交易(哲学家)不仅可以位于两个账户(叉子)之间的桌子边缘,而且还可以在一条线上切割,连接任意两个账户(叉子)。
答案 1 :(得分:0)
用餐哲学家和其他类似“问题”的主要目的不是描述真实场景,而是为过程交互提供一个干净,抽象,甚至简化的规范,一方面可以用作教学示例,另一方面,用于真实软件的构建块。
具体来说,餐饮哲学家是一个很好的例子,展示了如何发生活锁和死锁。
至于现实世界的场景,我不知道磁带驱动器,但我可以想象一个火箭导向系统,其中火箭翼是“叉子”而“哲学家”是控制成对的翅膀以引导它的过程。火箭。你甚至不需要修改通常的说明图来切换到这个解释:)