ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
並列プログラミングにおいて、各プロセスの協調をどうやって取るか、という問題に関する比喩。
並行処理の研究題材としてエドガー・ダイクストラ(Edsger Wybe Dijkstra)が提唱した。
中央にスパゲッティが盛られた円卓の回りに5人の哲学者が座っており、それぞれの前に皿が1枚置かれ、その右側にフォークが1本置かれる。
各哲学者から見ると、左右に1本ずつフォークが置かれているように見えるが、テーブル全体では5本しかフォークはない。哲学者は普段は考え事をしているが、空腹になると、まず自分の右側にあるフォークを取り、次に自分の左にあるフォークを取ってスパゲティを自分の皿に盛り、左のフォークを元の場所に戻して右のフォークで食事し、食事が終わると右のフォークを置いてまた考え事に戻る。
もし自分の使いたいフォークを他の人が使っている場合には、それが空くまで待っている。
普段はこれで問題がないが、ある瞬間に哲学者が5人とも食事をしたいと思った場合を想定する。
全員が右のフォークを手に取り、左隣の哲学者が使用中の左のフォークが空くのを待つが、その左の哲学者も同じ状況になるので、結果としていつまでも食事ができなくなってしまう。これは「デッドロック」と呼ばれる。
これを避ける方法を考えるのが、哲学者の食事問題である。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます