前述の哲学者ディナー問題の導線解法は、サイズ 4 のセフォアを使用し、すべての哲学者が右分岐の前に左分岐を取得しようとすることを示唆しています。 http://en.wikipedia.org/wiki/Dining_philosophers_problem#Conductor_solution
左フォークにアクセスする全員と右フォークにアクセスする全員にセマフォを使用する必要がありますか?
哲学者が指定された時間内に左フォークを取得できるが、右フォークを取得できない場合、哲学者は何をすべきか? 彼らは左フォークを返すべきですか?
哲学者がフォークを返す順序は重要ですか?
確かに、この解決策は依然として飢餓につながる可能性があります. たとえば、Wiki では、A と C の両方に 2 つのフォークがあると書かれています。これは、セマフォがこれ以上フォークしないことを意味し、5 番目にハングアップします。D と E の間のフォークは、テーブルの上に置いておく必要があります。次に、A が右のフォークを返すとします。
これでセマフォは 3 に戻ります。
D は左のフォークをもう一度試すことができますが、右に曲がれないことに気付きます。Bは左にしか行けません。また駄目。
そして、A はすでに左のフォークを持っているので、もう一度右のフォークを選択しようとする可能性があります。これは、私たちがぐるぐる回っていることを意味します。
何かが足りない
ヘルプ?