作者: aa06697 (todo se andarà) 2016-12-18 15:01:00
這個code是hoare monitor: process在signal後會讓被救的process先進來然後自己進去一個特別的queue(優先權比condition readyqueue還高的queue)next_count用來記錄有多少個「救命恩人」 因為在processwait的時候 代表cpu要給其他人 而此時若有救命恩人要優先救他 沒有才讓其他在等待的process進入monitor所以lineA lineB 就跟最左邊那格的code一樣然後wait的process會卡在wait(x_sem) lineC就是signal(x_sem) 要救在wait的process 然後wait(next) 就是讓救命恩人進去特別queue的用途補充一下 semaphore的wait跟monitor的wait意義不太一樣喔一個是搶執行權 一個是強迫去condition variable的queue休息