读者写着问题是怎样保证写着优先

 我来答
涂珈蓝澍yq
2012-01-04 · TA获得超过373个赞
知道答主
回答量:15
采纳率:0%
帮助的人:12.7万
展开全部
int readcount, writecount = 0;
semaphore rsem, wsem = 1; //
semaphore x,y,z = 1; //

void reader(){
while(1){
wait(z);//这个不知道干嘛使得。。。
wait(rsem);//是否有写进程在访问了,如果有rsem为0,则读进程阻塞;
wait(x);//x是为了对readcount的互斥修改;
readcount++;
if (readcount==1) //只要有一个读进程访问,
wait(wsem);//则阻塞写进程;
signal(x);
signal(rsem);//这个是为了后续读进程对readcount、wsem的访问
signal(z);
doReading();
wait(x);
readcount--;
if (readcount==0)//没有读进程了,
signal(wsem);//允许写进程访问;
signal(x);
}
}

void writer(){
while(1){
wait(y);
writecount++;
if (writecount==1)
wait(rsem);
signal(y);
wait(wsem);
doWriting();
signal(wsem);
wait(y);
writecount--;
if (writecount==0)
signal(rsem);
signal(y);
}

参考资料: 百度

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式