[理工] [OS]用binary sem.定義counting sem.
洪逸筆記上的定義是這樣寫的
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
→
01/21 18:21, , 1F
01/21 18:21, 1F
推
01/21 18:23, , 2F
01/21 18:23, 2F
→
01/21 20:34, , 3F
01/21 20:34, 3F
→
01/21 20:36, , 4F
01/21 20:36, 4F