看板 Grad-ProbAsk 關於我們 聯絡資訊
大家好 我是看洪逸老師的筆記 看到利用semaphore解決哲學家的晚餐code如下 共享變數 chopstick[0..4] of semaphore = 1 對pi程式如下: repeat wait(chopstick[i]);//拿左邊 wait(chopstick[(i+1)%5];//再拿右邊 eating signal(chopstick[i]);//放左邊 signal(chopstick[(i+1)%5];//放右邊 thinking until false 這是錯的 後來洪逸提出[法一] 最多允許4為哲學家上桌吃飯 證明我就省略了 老師的講義上面寫 增加一個no:semaphore=4 wait(no); . . . . signal(no); 我不懂得是 就算4個人 也沒辦法吧? 比如說 第一個p0近來拿了 0 , 1 chopstick 第二個p1近來拿了 1 , 2 chopstick 光到這邊 1的筷子不就重複被拿了嗎?這樣怎麼吃飯呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.250.31 ※ 編輯: keke0421 來自: 140.113.250.31 (11/19 12:01)
shcyril:這個解決方案是針對死結的避免 在五個資源下至多四個行程 11/19 12:32
shcyril:確保至少一個行程可以兩邊取得資源的意思 11/19 12:39
keke0421:感謝 11/19 18:18