经典操作系统问题――读写者问题(读者优先)
2013-08-17 11:09
211 查看
问题:
一些读者和一些写者对同一个黑板进行读写。多个读者可同时读黑板,但一个时刻只能有一个写者,读者写者不能同时使用黑板。对使用黑板优先级的不同规定使读者-写者问题又可分为几类。第一类问题规定读者优先级较高,仅当无读者时允许写者使用黑板。
P,V原语实现:
进程: writer-写者进程 reader-读者进程
定义变量:
mutex=1; //黑板资源
reader_mutex=1; //控制读者间的互斥
r_count=0; //统计读者人数
本文出自 “技术在于坚持” 博客,请务必保留此出处http://minilinux.blog.51cto.com/4499123/1275337
一些读者和一些写者对同一个黑板进行读写。多个读者可同时读黑板,但一个时刻只能有一个写者,读者写者不能同时使用黑板。对使用黑板优先级的不同规定使读者-写者问题又可分为几类。第一类问题规定读者优先级较高,仅当无读者时允许写者使用黑板。
P,V原语实现:
进程: writer-写者进程 reader-读者进程
定义变量:
mutex=1; //黑板资源
reader_mutex=1; //控制读者间的互斥
r_count=0; //统计读者人数
//reader - 读者进程 { while(true) { p(reader_mutex); //控制读者的互斥,防止出现两个读者同时执行reader_count++,而reader_count只加1; reader_count++; //要使用黑板的读者人数加1; if(reader_count==1) p(mutex); //如果是第一个读者,就要申请黑板; v(reader_mutex); //释放变量,让下一个读者可以进来读黑板; read(); //进行读黑板操作; p(reader_mutex); reader_count--; //读者读完黑板后,读者人数要减1,同样也要考虑互斥的情况; if(reader_count==0) v(mutex); //如果是最后一个读者,就要释放黑板资源; v(reader_mutex); }
//writer - 写者进程 { while(true) { p(mutex); //申请黑板资源; write(); //进行写操作; v(mutex); //释放黑板资源; } }
本文出自 “技术在于坚持” 博客,请务必保留此出处http://minilinux.blog.51cto.com/4499123/1275337
相关文章推荐
- 操作系统--信号量经典同步问题之读者优先问题
- 操作系统的优先读者和优先写着的读者/写着问题
- 操作系统中的读写者经典问题
- 【经典操作系统问题】读者写者问题分析
- 操作系统的优先读者和优先写着的读者/写着问题
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)
- 操作系统(经典进程同步问题)之写者优先
- 操作系统——读者写者问题(读者优先、强写者优先 和 公平竞争)
- 操作系统进程同步互斥经典问题之读者写者问题
- 操作系统同步互斥经典问题——读者写者问题
- 操作系统清华大学版笔记(十) 信号量、管程、条件互斥、经典同步问题(读者写者、哲学家问题)
- 优先读者/写者问题—操作系统
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)
- 操作系统--信号量经典同步问题之写者优先问题
- 操作系统同步互斥经典问题——读者写者问题
- 进程同步的经典问题1——读者写者问题(写者优先与公平竞争)
- 经典同步问题linux下的C实现:生产者-消费者问题,读者-写者问题,哲学家问题
- 操作系统经典同步互斥问题——哲学家就餐
- “读者-写者问题”的写者优先算法实现
- William Stallings 《操作系统内核和设计原理》书中Linux下C语言实现读者写者问题(写者优先)代码