→ aa06697: 題目是什麼啊0.0 09/05 08:51
: 【OS】
: 8.好像表達的沒有很好 想參考一下大家怎麼寫的QQ
: Chair: semaphone=4;
: Pi: int=0;
: while(前兩輪)
: {
: Pi++;
: wait(chair);
: C.S.
: signal(chair);
: }
: if(Pi==0)then wait(chair);
: wait(chair);
: C.S.
: signal(chair);
---------------------------------------------------
我寫出我的想法,請大家指教,我覺得好像有bug可是我想不出來
以下表示第i個人的結構(共5人)
semaphore chairs=4; //總共四張椅子,相當於四單位資源
int waitround[i]=0; //第i個人等待的次數,一開始設為0
do{
wait(chairs);
//sitting
signal(chairs);
} while(true)
其中Semaphore之wait修改如下
wait(S)
{ while(S<=0&&waitround[i]%3!=0)
waitround[i]++; //等待期間增加等待次數
//每個人都等待三次之後至少必須拿到一次椅子
//也就是不能存在有人連續三次都沒拿到椅子
S--;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.105
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1472973512.A.A76.html