管程:结构 等待调用 进程队列 管程等待区域 入口 管程 condition c1 局部数据 wait(c1) 条件变量 过程1 condition cn wait(cn 过程n TF gent queue signal(c 变量初始化代码 出口
管程:结构 condition c1 wait(c1) … condition cn wait(cn) Urgent queue signal(ci) 局部数据 条件变量 过程1 过程n 出口 变量初始化代码 入口 管程 等待调用 进程队列 管程等待区域
管程:示例 TYPE SSU E MONITOR var busy boolean; nobusy semaphore: define require, return; use wait, signal procedure requi re beg in if busy then wait( nobusy);/*调用进程加入等待队列*/ busy := ture; end procedure return b egIn busy false; signal (nobusy) /*从等待队列中释放进程* end begin /*管程变量初始化*/ busy false end
TYPE SSU = MONITOR 管程:示例 var busy : boolean; nobusy : semaphore; define require, return; use wait, signal; procedure require; begin if busy then wait(nobusy); /*调用进程加入等待队列*/ busy := ture; end; procedure return; begin busy := false; signal(nobusy); /*从等待队列中释放进程*/ end; begin /*管程变量初始化*/ busy := false; end;