1. 程式人生 > >The Little Book of Semaphores 訊號量小書 第六章 不那麼經典的問題 6.3 狒狒穿越問題

The Little Book of Semaphores 訊號量小書 第六章 不那麼經典的問題 6.3 狒狒穿越問題

第六章 不那麼經典的問題

6.3 狒狒穿越問題

這個問題改編自Tanenbaum的作業系統:設計和實現[12]。 南非克魯格國家公園(Kruger National Park)的某處有一個深峽谷,還有一條橫跨峽谷的繩索。 狒狒可以在繩子上手挽手地擺動著穿過峽谷,但如果兩個朝相反方向走的狒狒在中間相遇,他們將會戰鬥並摔死。 此外,繩索僅足以容納5只狒狒。 如果繩子上同時有更多的狒狒,它就會斷開。

假設我們可以教狒狒使用訊號量,我們想設計一個具有以下屬性的同步方案:

•一旦狒狒開始越過,它就會保證到另一邊而不會碰到另一邊的狒狒。 •繩索上永遠不會有超過5只狒狒。 •持續不斷的狒狒從一個方向穿過不應該無限期地阻止狒狒向另一個方向走(不要有飢餓問題)。

我不會包括這個問題的解決方案,因為答案應該很清楚。