食事する哲学者:箸の取り方で固まる
円卓に座る 5 人の哲学者。箸(フォーク)の取り方の方策を切り替えると、全員が固まるデッドロックと、止まらない進行(ライブ)が分かれます。
5 人
6
箸の取り方の方策(これがデッドロックを左右する)
考え中
空腹(箸を待つ)
食事中
デッドロック
状態
—
食事中の人数
—
食事した延べ回数
—
空腹で待つ人数
—
デッドロックの 4 条件(成立中=赤/崩した=緑)
- 相互排除:1本の箸は1人しか持てない
- 保持と待機:片方を持ったまま、もう片方を待つ
- 横取り不可:他人の箸を奪えない
- 循環待機:待ちの輪が一周つながる
4つが同時に成立すると停止。1つでも崩せば進む。
円卓(哲学者と箸)
5 人の哲学者が円卓を囲み、「考える」と「食べる」を繰り返します。食べるには左右 2 本の箸が要りますが、箸は隣どうしで共有で、合計 5 本しかありません。
もし全員が同時に「まず左の箸を取る」と、全員が左を握ったまま右を待ち、誰も右を取れず永遠に止まります。これがデッドロックです。
方策ボタンで取り方を変え、非対称化や調停者で循環がほどけ、再び全員が食事できる様子を確かめましょう。
もし全員が同時に「まず左の箸を取る」と、全員が左を握ったまま右を待ち、誰も右を取れず永遠に止まります。これがデッドロックです。
方策ボタンで取り方を変え、非対称化や調停者で循環がほどけ、再び全員が食事できる様子を確かめましょう。
いま何が起きている?
ここがポイント
- デッドロックは「方策」の問題 ── 同じ資源・同じ人数でも、取り方しだいで固まるか進むかが決まる。
- 4 条件は AND ── 相互排除・保持と待機・横取り不可・循環待機がすべて揃ったときだけ停止する。
- 循環を断つ ── 1 人だけ取得順を逆にする(非対称化)と待ちの輪が切れ、デッドロックが起きない。
- 調停者で防ぐ ── 同時に着席できる人数を
N-1に制限すると、必ず誰かは 2 本取れて全体が止まらない。