看板 Grad-ProbAsk 關於我們 聯絡資訊
http://i.imgur.com/ZgQbPOn.jpg 各位大大小弟想問看看 有關conditional critical region 用 semaphore 實作的部分 圖片中第二點 想問看看模擬部分 如果sleep中有P1 P2 P3的話 什麼條件會觸發P1進入retry 然後依序wakeup2 3呢? 因為是重考生所以讀自己的筆記突然忘記怎麼觸發的 硬幹了半個小時還是沒有解答 再麻煩各位神人幫忙解答,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.7.244 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1480253556.A.890.html
ken52011219: 剛剛有試著TRACE 但太難呈現了直接放棄 11/28 20:13
ken52011219: 因為一開始retry 的初始值就是 0 了 P1直接進去 11/28 20:13
ken52011219: 當P1做完 end;之後 ....s;... 下方會if else判定 11/28 20:14
ken52011219: 要signal哪一個, mutex、sleep 會在做的過程中為0 11/28 20:15
ken52011219: 只剩下RETRY 為 2 因此signal(retry) 11/28 20:16
ken52011219: P2 做完同上 11/28 20:16
ken52011219: 昨天混進模擬考考試太累所以沒看 同為重考生加油 QQ 11/28 20:17
ken52011219: 看錯 mutex 為 1 且不在if判定式內 所以無關 11/28 20:20
joeboy: 剛剛跟朋友討論完,好像只要有一個人條件成立完成之後就 11/28 22:20
joeboy: 會叫醒sleep中的人進入retry,接下來就會全部叫醒sleep 11/28 22:20
joeboy: 的人,等到sleep中沒有人之後最後一個進入retry的會sign 11/28 22:20
joeboy: al第一個去check B條件 11/28 22:20
ken52011219: 思考了一下,你們討論的跟我思考的只有一點不同 11/28 22:35
ken52011219: P_1是如何得到Signal(retry)的 11/28 22:35
ken52011219: 「第一個」進入retry的是直接進入沒錯 11/28 22:36
ken52011219: 而當「不同批」的Process進入時 若第一批的process 11/28 22:37
ken52011219: 已經在retry區 , 下一批才剛在mutex等時 就是如你們 11/28 22:38
ken52011219: 所說的 等到下一批的最後一個process進入retry區 11/28 22:39
ken52011219: retry 才signal 由1變0 11/28 22:39