食事する哲学者の問題
「食事する哲学者」の問題は、並行処理の研究課題としてダイクストラにより提案された。
その内容は以下の通り。
円卓を囲んで5人の哲学者が思策にふけりつつ、時に応じて食事を取る。
食事は円卓中央の皿に山盛りにされたスパゲッティである。
しかし、このスパゲッティはあまりにもからまりあっているので、食べるときには両手にフォークを持って食べなければならない。
フォークは、哲学者と哲学者の間に1本ずつ、都合5本が置いてある。
つまり、右隣の哲学者が食事をしている最中は、右側のフォークは使用中であり、自分では使えないことになる。
左についても同じ。
ここで問題は、5人の哲学者が一人も飢えることがないように、食事をさせるプログラムを書くことである。
この問題は並行処理のモデル化であり、フォークが共有資源にあたる。また、フォークを哲学者たちが取り合う部分がCritical Sectionとなる。
dining philosophers problem
5 人の哲学者の食事問題(five dining philosophers' problem)
喫煙者問題(cigarette smokers' problem)
生産者と消費者の問題、生産者・消費者問題、プロデューサ・コンシューマ問題(producer-consumer problem)
読み手と書き手の問題、読み書き問題、リーダ・ライタ問題(reader-writer problem)
眠り床屋問題(sleeping barber problem)
食事する暗号学者の問題 -- 名前は似ているが問題としての関連はない。
食事する哲学者の問題 - Wikipedia