一、读者-写者问题
一个很好看的小说是由一个著名的作家书写,这篇小说吸引了很多的读者进行阅读。但是如果读者在阅读的时候,作家进来修改文章了,就会导致每个读者看到的内容不同,进而每个人对于这个文章的理解就会有偏差。基于这个问题,一个十分有意思的读者-写者问题诞生了。
二、思路分析
这个问题的思路就是,可以允许多个读者访问这个文件,但是对于写者只能允许当文件里没有读者时,才可以允许写者进入修改文件。除了对文件加上一个互斥锁外,我们还需要一个统计读者的计数参数count。
三、代码实现
int count=0;
semaphore rw=1;
semaphore mutex=1;//用于保护读者,依次进入
writer() {//写者正常进入
while (1) {
P(rw);//判断读者是否可以写文件
//写文件
V(rw);//释放文件写权限
}
}
reader(){
while(1){
P (mutex);
if(count=;,0)
P (rw) ;
count++;
V (mutex) ;
//读书
P (mutex) ;
count--;
if (count== O)
V (rw) ;
V (mutex) ;
}
}