看板 Grad-ProbAsk 關於我們 聯絡資訊
洪逸筆記上的定義是這樣寫的 value=0 代表counting sem.的號誌值 S1=1 ; S2=0 wait(c): wait(S1); value --; if(value<0) then { signal(S1); wait(S2); } else { signal(S1); } signal(c): wait(S1); value++; if(value<=0) then signal(S2); signal(S1); 我的問題是,畢竟他還是用binary在模擬,所以在wait(S2)那邊會卡一堆process 而且S2的值最低也只是0 那只要跑signal(c)一次,卡在wait(S2)的所有process不就一次全部被放出來了嗎? 這樣不就違背要互斥的本意了? 而且value也是不是也不等於卡在wait(c)的值了? 不知道是我想錯還是筆記抄錯了!? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.121.165 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1421831821.A.231.html ※ 編輯: GuardmanMart (1.172.121.165), 01/21/2015 17:18:23 ※ 編輯: GuardmanMart (1.172.121.165), 01/21/2015 17:19:39
j897495: 被卡住的時候還沒執行wait signal一次救一個wait 01/21 18:21
j897495: 應該說是卡在while迴圈更正 01/21 18:23
GuardmanMart: OK了! 01/21 20:34
GuardmanMart: 一時忘記wait內的過程順序 囧 01/21 20:36