05进程管理三互斥和同步二范例.ppt

* wait(rmutex); If readcount==0 then wait(wmutex); Readcount=readcount+1; signal(rmutex); ……执行读取操作 wait(rmutex); Readcount:=readcount-1 if readcount==0 then signal(wmutex); signal(rmutex); 读者-写者问题 读者部分 第一个读者要阻塞所有后来的写者 最后一个读者要唤醒所有阻塞的写者 * wait(wmutex); ……执行写操作 signal(wmutex); 写者部分 * 增加限制条件,即同时读取的读者数不能超过RN L,mx:=RN,1 信号量集: Swait(S,d,t); Ssignal(S,d) S为信号量,d为需求量,t为下限值 写者: Swait(mx,1,1;L,RN,0); ……执行写操作 Ssignal(mx,1); 读者-写者问题 一般信号量集机制 读者: Swait(L,1,1); Swait(mx,1,0); ……执行读取操作 Ssignal(L,1); If(L=1)L=L-1; If(mx=1)mx=mx; If(mx=1 L=RN) { mx=mx-1;L=L; } * 3. 哲学家进餐问题 (the dining philosophers

文档评论(0)

1亿VIP精品文档

相关文档