读者写者问题

  • 一、问题描述
  • 二、读者优先
  • 三、写者优先

一、问题描述

要求:

  1. 允许多个读者可以同时对文件进行执行读操作
  2. 只允许一个写者往文件中写信息
  3. 任一写者在完成写作操作之前不允许其他读者或写着进入缓冲区
  4. 写着执行写操作之前,应让已有的写者和读者全部退出

使用PV操作求解该问题


二、读者优先

int readercount=0;
semaphore mutex=1;
semaphore readermutex=1;reader()
{while(1){P(readermutex);if(readercount==0){P(mutex);}readercount++;V(readermutex);读文件;P(readermutex)readercount--;if(readercount==0){V(mutex);}V(readercount);}
}writer()
{while(1){P(mutex)写文件;V(mutex);}
}

三、写者优先

int readercount=0;
semaphore mutex=1;
semaphore writermutex=1;
semaphore readermutex=1;reader()
{while(1){P(writermutex);//是否有写者在用缓冲区P(readermutex);if(readercount==0){P(mutex);}readercount++;V(readermutex);V(writermutex);读文件;P(readermutex)readercount--;if(readercount==0){V(mutex);}V(readercount);}
}writer()
{while(1){P(writermutex);//是否有其他写者在用缓冲区P(mutex)写文件;V(mutex);V(writermutex);}
}

PV操作每日一题-读者写者问题相关推荐

  1. PV操作每日一题-吸烟者问题

    吸烟者问题 一.问题描述 二.解答 一个比较经典的同步问题 一.问题描述 三个吸烟者在一个房间内,还有一个香烟供应者.为了制造并抽掉香烟,每个吸烟者需要三样东西:烟草.纸和火柴,供应者有着丰富货物提供 ...

  2. PV操作每日一题-独木桥问题

    独木桥问题 一.问题描述 二.问题求解 三.碎碎念 一.问题描述 东西方向汽车过独木桥,为保证安全,只要桥上无车,则允许一方的汽车过桥,待另一方的车全部过完后,另一方的车才允许过桥. 不难发现,是读者 ...

  3. java实现的PV操作经典例子:读者写者、贪睡的理发师、生产者消费者。

    其中读者写者和贪睡的理发师使用的Semaphore类:生产者消费者使用的是管程. 读者写者 class Semaphore {int value;public Semaphore(int v){thi ...

  4. 几个java实现的PV操作经典例子:读者写者、贪睡的理发师、生产者消费者

    其中读者写者和贪睡的理发师使用的Semaphore类:生产者消费者使用的是管程. 读者写者: class Semaphore {int value;public Semaphore(int v){th ...

  5. PV操作每日一题-售票问题

    售票问题 一.问题描述 二.问题求解 炒鸡经典的同步问题! 一.问题描述 汽车司机与售票员之间必须协同工作,一方面只有售票员把车门关好后司机才能开车,因此,售票员关好车门应通知司机开车,然后售票员售票 ...

  6. PV操作每日一题-黑白棋子问题(变式)

    黑白棋子问题(变式)⚫⚪ 一.问题描述 二.问题求解 三.碎碎念 一.问题描述 有一个盒子中放有数量相等的黑白棋子各100枚,现在用自动分拣系统将黑白棋子分开,系统中有两个进程P1和P2.P1负责白棋 ...

  7. PV操作每日一题-黑白棋子问题

    黑白棋子问题棋子⚫⚪ 一.问题描述 二.问题求解 三.碎碎念 温馨提示,这个题目的代码可能很简单,但是有点绕,类似于前面的橘子苹果问题的交替放入水果.好啦,开始! 一.问题描述 有一个盒子中放有数量相 ...

  8. 防抖 节流_每日一题手写函数防抖与节流

    关注"前端学苑" ,坚持每天进步一点点 「~函数防抖与节流 ~」 每日一题,希望让爱学习.思考的前端技术伙伴在一起学习.复盘.成长. 基础知识要夯实,原理源码要深入,深度广度要扩展 ...

  9. resize函数_每日一题手写函数防抖与节流

    关注"前端学苑" ,坚持每天进步一点点 「~函数防抖与节流 ~」 每日一题,希望让爱学习.思考的前端技术伙伴在一起学习.复盘.成长. 基础知识要夯实,原理源码要深入,深度广度要扩展 ...

最新文章

  1. 玩转高性能超猛防火墙nf-HiPAC
  2. 十年程序员的告诫:千万不要重写代码!
  3. 阿里发布2019十大科技趋势:AI依然最热
  4. 重磅!基金委发布科研不端行为调查处理办法
  5. Nosql数据一致性技术概要
  6. lucene正向索引——正向信息,Index – Segments (segments.gen, segments_N) – Field(fnm, fdx, fdt) – Term (tvx, ...
  7. 13.文件:因为懂你,所以永恒
  8. AD本地域组和全局组的区别
  9. 中国大推力矢量发动机WS15 跨入 世界先进水平!
  10. 拼多多上买车,累计上线70个小时,成交订单9463笔!
  11. InfoWorld 2020 年公布最佳开源软件
  12. 解析PayPal支付接口的PHP开发方式
  13. 你理解大话西游片尾那句“他好像一条狗”吗?
  14. 计算机指法基础知识,电脑打字基础知识及打字指法
  15. 八爪鱼抓取html,网页数据爬取方法详解 - 八爪鱼采集器
  16. 9月,重磅推出Linux、数据结构、领域驱动等10本程序员新书
  17. 2020年8月程序员工资统计,平均14401元,下跌势头止住了
  18. expdp报错ORA-39002: invalid operation,ORA-39070: Unable to open the log file
  19. 将带逗号的字符串转换为数组
  20. 公众号扫描二维码(前端uniapp、后端java)

热门文章

  1. C语言:输入一行字符,统计其中有多少单词,单词之间用空格分隔开
  2. 主流分布式架构的风流韵事...
  3. matlab调用函数出nan,求助:Matlab的fmincon函数出现RCOND = NaN
  4. 写一副对联,横批是“永不退稿”,那么上下联是什么
  5. Chatgpt AI这么恐怖?未就业就要失业了?
  6. mac下使用inode客户端上网无法开启互联网共享的解决办法
  7. bzoj2122: 工作评估 分块 二分
  8. MySQL Functions 常用函数汇总
  9. c语言scanf错误c4996,C语言常见错误杂谈(一)scanf()、scanf_s()与错误 C4996与解决方法...
  10. 哈工大计算机硕士就业年薪,毕业生薪酬:南大、哈工大(深圳)平均年薪超17万...