2013-03-28 62 views
2

所述的哲學家晚餐問題的導體解決方案表明,使用大小爲4的半音,並且所有哲學家都試圖在右前叉之前得到左叉。 http://en.wikipedia.org/wiki/Dining_philosophers_problem#Conductor_solution導體解決哲學家晚餐

信號量應該用於每個人訪問左側叉子和每個人訪問右側叉子嗎?

哲學家應該怎麼做,如果他們可以得到左叉,但沒有在指定的時間內得到正確的叉?他們應該給左後衛嗎?

哲學家迴歸什麼順序有什麼關係?

當然,這個解決方案仍然可能導致飢餓。例如維基說A和C都有兩個分支。這意味着信號量將不再向任何人分叉,並堅持到第五。 D和E之間的叉子必須留在桌子上。然後說A返回他的右叉。

現在信號燈就會回到3

d可以爲左叉再試一次,然後意識到他無法獲得正確的。 B只能左轉。再次沒有用處。

而且A可以嘗試再次選擇合適的叉子,因爲他已經有了左手。這意味着我們繞着圈子走。

我缺少的東西

有幫助嗎?

+0

信號量應在拾取*叉*之前使用,這就是要點。 – Bergi 2013-03-28 00:34:42

+0

@Bergi然後再增加兩個?所以它永遠不會被增加一個? – 2013-03-28 01:17:32

回答

1

我相信哲學家總是同時返回兩個叉子。這個問題通過要求哲學家獲得左叉然後右叉來進一步簡化。鎖定採購訂單確實有助於簡化死鎖問題。遵循指揮計劃將保證死鎖是不可能的。

這裏額外的訣竅是服務員要求5個哲學家中只有4個可以同時持有叉子(所以它更像是一個計數信號燈,計算哲學家而不是叉子)。

+0

是的就是這樣。感謝這裏的更多信息... http://www.csl.mtu.edu/cs4411.choi/www/Resource/Semaphore.pdf – 2013-03-28 02:27:46

相關問題