🙌

分散処理を勉強した記録~その21~

2021/02/20に公開

この記事は、
「分散処理システム」著:真鍋義文 森北出版株式会社
を参考にしています。

今回は、「合意問題」についてです。
病弱なAさんBさんCさんが居ます。
3人は手紙でやり取りをして、
山の上にある「山上駅」か
川の下にある「川下駅」で合流しようとしています。
手紙はいつ届くのか分からない上、
3人とも病弱なのでいつ入院するかも分かりません。
なお、誰かが入院してしまった場合は、
入院していない人だけ合流できればいい、ということにします。

ここで、Cさんが「多数決で決めよう」という手紙を出すとします。

AさんとBさんがCさんからの手紙を受け取って、
何事もなく合流場所を決められれば問題ありませんが、
ここでCさんが手紙を出す前に入院してしまったとしたらどうなるでしょうか。

AさんとBさんはCさんの手紙を待ち続け、
「デッドロック」状態になってしまいます。
こうした事態を防ぐために、
・一定時間返事がない場合は、入院扱いとする
・意見が割れたら「川下駅」に集合する
というルールを設定します。

ここで、
Aさんは「山上駅」、
Bさんは「川下駅」という手紙を全員に送りましたが、
Cさんからは手紙が届きませんでした。

AさんとBさんはCさんを「入院した」とみなし、
なおかつ意見が割れたので、「川下駅」に行くことにしました。

しかし、実際はCさんの手紙の到着が遅れていただけで、
Cさんは入院していませんでした。
CさんはAさんとBさんの手紙と、自分の意見を総合して
「山上駅」に行くことにしました。
こうした状況を回避するために、「合意問題」が使われます。

今回はここまでです。ありがとうございました。

Discussion