看板 Grad-ProbAsk 關於我們 聯絡資訊
※ 引述《jas1123kimo (傑森)》之銘言: : 目的:3 部列表機被 n 個 process 共享,設計 : monitor 去支配三部列表機依照 process : 之 priority number(值越大優先權值越高) : 宣告..... : request演算法中: : void request printer(int proc_number) : { : if (num avail > 0) { : num avail--; : return; : } : waiting[num_waiting] = proc_number; : num_waiting++; : sort(waiting); 這裡是將現在的process的號碼放進等待的陣列中 因為process的號碼越大優先權越大,所以做了一次sorting 所以可以猜那個sorting是由大排到小吧 : while (num avail == 0 || waiting[0] != proc_number) do : c.wait(proc_number); 如果可以用的printer數量是0或是優先權最大(wainting[0])的process不是自己 就繼續等,直到可用數量大於0而且自己是等待陣列中最大優先權的 : waiting[0] = waiting[num_waiting-1]; : num_waiting--; : sort(waiting); : num_avail--; 這裡是離開迴圈,拿到使用權,並且離開等待陣列 通常是把陣列的每一個往前移一格 但因為這不是FIFO的排隊,所以直接從最後一個拿到最前面,再sorting就好 : } : 從waiting[num_waiting]之後我就看不懂了= =有人可以解釋一下嗎,感恩! : PS.跟洪逸教得不太一樣,好像是原文書的 應該是這樣吧... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.217.50
jas1123kimo:剛剛才看到,感恩,了解了會再回! 12/14 13:35