读者与写者问题
2014-01-07 20:04
218 查看
1:利用记录型信号量解决:
Varrmutex,wmutex :semaphore:=1,1;
Readcount :integer:=0;
begin
parbegin
Readercont:begin
repeat
wait(rmutex);
ifreadcount=0 then wait(wmutex);
Readcount:Readcount+1;
signal(rmutex);
readoperation;
wait(rmutex);
Readcount:Readcount-1;
If Readcount=0 then signal(wmutex);
Signal(rmutex);
until false;
writer:begin
wait(wmutex);
writer operation
signal(wmutex)
until false
end
parend
end
1:利用信号量集机制解决:(即改为允许多个读者同时读,控制读者的数目)
VarReadcount :integer;
R,W:semaphore:=Readcount,1;//学者与读者的互斥信号量
begin
parbegin
reder:begin
repeat
Swait(R,1,1);
Swait(W,1,0);
Readoperation;
Signal(R,1);
until false;
end
writer:begin
repeat
Swait(W,1,1;R,Readcount,0);
Writer operation
Signal(W,1);
untilfalse;
end
parend
end
parendend
参考文献:计算机操作系统
Varrmutex,wmutex :semaphore:=1,1;
Readcount :integer:=0;
begin
parbegin
Readercont:begin
repeat
wait(rmutex);
ifreadcount=0 then wait(wmutex);
Readcount:Readcount+1;
signal(rmutex);
readoperation;
wait(rmutex);
Readcount:Readcount-1;
If Readcount=0 then signal(wmutex);
Signal(rmutex);
until false;
writer:begin
wait(wmutex);
writer operation
signal(wmutex)
until false
end
parend
end
1:利用信号量集机制解决:(即改为允许多个读者同时读,控制读者的数目)
VarReadcount :integer;
R,W:semaphore:=Readcount,1;//学者与读者的互斥信号量
begin
parbegin
reder:begin
repeat
Swait(R,1,1);
Swait(W,1,0);
Readoperation;
Signal(R,1);
until false;
end
writer:begin
repeat
Swait(W,1,1;R,Readcount,0);
Writer operation
Signal(W,1);
untilfalse;
end
parend
end
parendend
参考文献:计算机操作系统
相关文章推荐
- (操作系统原理·第三章)读者-写者问题
- 秒杀多线程第十一篇 读者写者问题
- java 读者写者问题
- Java实现生产者消费者问题与读者写者问题
- 生产者消费者问题与读者写者问题---信号量机制
- 操作系统PV操作及读者写者问题
- 使用信号量解决读者写者问题--读者优先
- 用信号量解决读者写者问题
- 秒杀多线程第十一篇 读者写者问题
- 现代操作系统-读者/写者问题
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- 读者-写者问题 写者优先与公平竞争
- JAVA多线程实现读者写者问题
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock .
- 读者-写者问题
- Linux多线程──读者写者问题
- 秒杀多线程-读者写者问题
- (操作系统原理·第三章)读者-写者问题
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock