看板 Grad-ProbAsk 關於我們 聯絡資訊
: 【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
aa06697: 題目是什麼啊0.0 09/05 08:51