推 A4P8T6X9: 為了讓人覺得有拿到 key? 12/24 21:30
推 coilion9670: 個人淺見不知道對不對 12/25 03:34
→ coilion9670: while判斷時中呼叫副程式再傳回這樣花的時間比較久 12/25 03:35
→ coilion9670: 當有process卡在while中無法進入臨界區間就會一直 12/25 03:36
→ coilion9670: call副程式,如果寫在while判斷後就可以避免此時間的 12/25 03:37
→ coilion9670: 浪費 12/25 03:37
→ coilion9670: call副程式還有可能有搶資源的情形,能避免應該會是 12/25 03:44
→ coilion9670: 一大助益 12/25 03:44
→ galapous: 但照原本那樣寫也是每個while會call一次test-and-set不 12/25 09:17
→ galapous: 是嗎? 12/25 09:17
→ kkk99512: 這份Code在出口段的地方是不是有避免Starvation的動作? 12/25 18:07
→ kkk99512: 如果是的話,因為要做環狀的檢查,然後指定下一個進入 12/25 18:07
→ kkk99512: C.S的Process,才會在入口段的地方加入這些條件 12/25 18:08
→ galapous: 出口有在沒process想進來時把lock設成false,完全沒動到 12/25 18:52
→ galapous: key,所以才想說為啥不能省略掉 12/25 18:52
→ kkk99512: 就是說出口地方,會指定下一個進C.S的程式是誰,不改Key 12/25 19:21
→ kkk99512: 因為如果改到Key的話,會造成大家一起搶Key 12/25 19:22
→ kkk99512: 如果有一隻很衰一直搶不到,就違反Bounded-waiting了 12/25 19:22
推 kkk99512: 這樣可以在保持Key不變的狀況下,指定某隻程式接續執行 12/25 19:28
→ qoojordon: kkk的解釋蠻好der , 受教惹 , 謝謝你 12/25 19:38
→ galapous: 如果多個process想進入的話下面是改waiting變成false 12/25 20:21
→ galapous: 假設現在process i從c.s.出來,那只有從i開始檢查一輪到 12/25 20:22
→ galapous: process i-1都沒人想進去,才會改lock成false,這樣應該 12/25 20:23
→ galapous: 沒有bounded-waiting問題吧?因為沒人想進等於重新開始? 12/25 20:24
→ galapous: 還是我哪邊想錯了QQ 12/25 20:24
補上完整程式碼
※ 編輯: galapous (36.228.111.134), 12/25/2014 20:31:20
→ qoojordon: bounded waiting有錯是發生在入口,原先有key的寫法我 12/25 20:32
推 qoojordon: 更正 , 這份程式後半段和Peterson不同,我誤會惹 12/25 21:00
→ kkk99512: 我想我了解您的意思了,一下子沒有看清楚 不好意思 12/25 21:27
→ kkk99512: 而且我開始覺得您說得好像有點道理 12/25 21:27