2

前述の哲学者ディナー問題の導線解法は、サイズ 4 のセフォアを使用し、すべての哲学者が右分岐の前に左分岐を取得しようとすることを示唆しています。 http://en.wikipedia.org/wiki/Dining_philosophers_problem#Conductor_solution

左フォークにアクセスする全員と右フォークにアクセスする全員にセマフォを使用する必要がありますか?

哲学者が指定された時間内に左フォークを取得できるが、右フォークを取得できない場合、哲学者は何をすべきか? 彼らは左フォークを返すべきですか?

哲学者がフォークを返す順序は重要ですか?

確かに、この解決策は依然として飢餓につながる可能性があります. たとえば、Wiki では、A と C の両方に 2 つのフォークがあると書かれています。これは、セマフォがこれ以上フォークしないことを意味し、5 番目にハングアップします。D と E の間のフォークは、テーブルの上に置いておく必要があります。次に、A が右のフォークを返すとします。

これでセマフォは 3 に戻ります。

D は左のフォークをもう一度試すことができますが、右に曲がれないことに気付きます。Bは左にしか行けません。また駄目。

そして、A はすでに左のフォークを持っているので、もう一度右のフォークを選択しようとする可能性があります。これは、私たちがぐるぐる回っていることを意味します。

何かが足りない

ヘルプ?

4

1 に答える 1

1

哲学者は常に「同時に」両方のフォークを返すと私は信じています。この問題は、哲学者が左のフォークを取得してから右のフォークを取得する必要があるため、さらに単純化されます。ロック取得順序は、デッドロックの問題を単純化するのに非常に役立ちます。コンダクター方式に従うと、デッドロックが発生しないことが保証されます。

ここでの追加のトリックは、ウェイターが一度にフォークを保持できるのは 5 人の哲学者のうち 4 人だけであることを要求することです (つまり、フォークではなく哲学者を数えるセマフォのようなものです)。

于 2013-03-28T00:33:50.367 に答える