5

Producer/Consumer と Reader/Writer が思いつきやすいですが、食の哲学者はどうでしょうか。N 個のプロセスと N 個のリソースがリング トポロジー上に配置され、相互にインターリーブされるのはどのような状況ですか? M 個のリソースをめぐって競合する N 個のプロセスを考えることができますが、この場合、各プロセスは任意の 2 つのリソースを使用する可能性があります。

wikiによると、Dijkstra はこれを使用して、テープ ドライブの周辺機器をめぐって競合するコンピューターをシミュレートしました。このシナリオは現代にも存在しますか?

4

2 に答える 2

4

2 つのアカウント間でトランザクションを実行する問題は、食事の哲学者の問題と非常によく似ていると思います。トランザクションを実行するには、スレッドは両方のアカウントをロックして、正しい値が 1 つのアカウントから引き落とされ (最初に利用可能な資金があることを確認)、別のアカウントに入金されるようにする必要があります。

トポロジーは厳密には円卓ではありませんが、非常に近いものです。テーブルに 5 つのアカウントがあるとします。このアナロジーでは、アカウントはフォークです。任意の 2 つのアカウントがトランザクションに参加できます。トランザクション == 哲学者。したがって、この例では、トランザクション (哲学者) は 2 つのアカウント (フォーク) の間のテーブルの端に位置するだけでなく、2 つのアカウント (フォーク) を接続する、テーブルを横切る線にも配置できます。

于 2014-05-20T21:35:28.437 に答える