读者写者问题
2009-09-22 14:06
239 查看
读者写者问题是经典的进程同步问题,此例应解决以下问题:
1、读进程正在操作,写进程不能进入
2、写进程正在操作,读进程不能进入
3、读进程正在操作,其它读进程可以进入
4、写进程正在操作,其它写进程不能进入
解决方法:利用记录型信号量
定义读、写互斥信号量rmutex、wmutex,一个读进程数目整形变量readcount;
wait(mutex),signal(mutex)为对信号量的原语操作
读进程描述:
Code:
wait(rmutex);
if(readcount == 0)
wait(wmutex);
readcount++;
signal(rmutex);
/*...
perform read operation
...*/
wait(rmutex);
readcount--;
if(readcount == 0)
signal(wmutex);
signal(rmutex);
写进程描述:
Code:
wait(wmutex);
/*...
perform write operation
...*/
signal(wmutex);
1、读进程正在操作,写进程不能进入
2、写进程正在操作,读进程不能进入
3、读进程正在操作,其它读进程可以进入
4、写进程正在操作,其它写进程不能进入
解决方法:利用记录型信号量
定义读、写互斥信号量rmutex、wmutex,一个读进程数目整形变量readcount;
wait(mutex),signal(mutex)为对信号量的原语操作
读进程描述:
Code:
wait(rmutex);
if(readcount == 0)
wait(wmutex);
readcount++;
signal(rmutex);
/*...
perform read operation
...*/
wait(rmutex);
readcount--;
if(readcount == 0)
signal(wmutex);
signal(rmutex);
写进程描述:
Code:
wait(wmutex);
/*...
perform write operation
...*/
signal(wmutex);
相关文章推荐
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- 经典的IPC问题 -- 哲学家就餐问题、读者-写者问题、理发师睡觉问题、生产者-消费者问题详解
- 操作系统之读者与写者问题
- 多线程同步问题中,读者——写者问题,iOS实现。
- OS: 读者写者问题(写者优先+LINUX+多线程+互斥量+代码)
- 秒杀多线程第十一篇 读者写者问题
- 用信号量解决读者写者问题
- 用信号量解决读者写者问题
- 读者-写者问题的 有一个写者等待,后面的读者就阻塞直到写者完成的代码
- [转]: 读者写者问题(读写锁问题)
- (操作系统原理·第三章)读者-写者问题
- (操作系统原理·第三章)读者-写者问题
- 秒杀多线程第十一篇 读者写者问题
- 读写锁解决读者与写者问题
- 读者-写者问题 写者优先与公平竞争
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- 操作系统PV操作及读者写者问题
- 读者写者问题(一)
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结