当前位置: 首页 > news >正文

多生产者,多消费者

semaphore mutex=1,apple=0,orange=0,plate=1;dad(){while(true){准备一个苹果;P(plate);//表示自己要使用这个盘子P(mutex);把苹果放入盘子;V(mutex);V(apple);//盘子里苹果数量+1}
}mom(){while(true){准备一个橘子;P(plate);//表示自己要使用这个盘子P(mutex);把橘子放入盘子;V(mutex);V(orange);//盘子里橘子+1}
}
daughter(){while(true){P(apple);//取出一个P(mutex);从盘中取苹果;V(mutex);V(plate);//空盘子+1吃苹果;}
}
son(){while(true){P(orange);P(mutex);从盘子取橘子;V(mutex);v(plate);吃橘子;}
}

上面的代码,因缓冲区plate的数量为1,因此可以省略掉mutex

但是如果plate大于1,就必须要使用mutex互斥信号量

考试的时候加上互斥信号一定不会错。就是要注意顺序,mutex的P操作必须在实现同步的P操作之后,否则可能引起死锁。

http://www.hskmm.com/?act=detail&tid=20850

相关文章:

  • GEO优化实战指南:一周内让豆包、Deepseek、Kimi等推荐了我的插件
  • 房产楼盘小程序管理系统:助力房产营销数字化升级的优质解决方案
  • 高速信号处理设计方案:413-基于双XCVU9P+C6678的100G光纤加速卡
  • Teamcenter:结构管理器查询(又称:BOM结构查询)
  • 2025年最好用的同步云盘是哪个?一个老用户的真实体验分享
  • 使用 ShedLock 实现多实例定时任务单执行的常见错误及解决办法
  • 1_二分查找
  • AI元人文:悟空博弈专用芯片
  • 【ACM出版】第五届管理科学和软件工程国际学术会议(ICMSSE 2025)
  • PiXYZ Studio 2021下载地址与安装教程
  • coremail日常操作
  • Win 10 LSTC 使用 Podman - tfel
  • 一生一芯学习:程序,运行时环境与AM(一)
  • 如何用Java25编译Java17的项目
  • [MCP] MCP Resources
  • 【ACM出版】2025年第二届人工智能与未来教育国际学术会议(AIFE 2025)
  • HL工作日志
  • Halcon基础——图像增强
  • HTML 开发工具有哪些?常用 HTML 开发工具推荐、学习路线与实战经验分享
  • PS 商业级人像修图插件:Infinite Retouch V1.0.3 全面指南
  • NVIDIA 开源 Audio2Face:音频生成逼真面部动画;Gemini Live API 支持思考能力 丨日报
  • 深入解析:4、urbane-commerce 认证请求 DTO 设计规范
  • mp4/图片转gif
  • 详细介绍:09.【Linux系统编程】“文件“读写操作,Linux下一切皆文件!
  • 数据类型-元组
  • BindingList的应用与改进
  • 谷歌 SEO 新词 xx animate 等实操教程
  • 完整教程:【读书笔记】架构整洁之道 P6 实现细节
  • Print Conductor打印软件安装教程!一款非常好用的批量打印软件!支持PDF、Word、Excel、图片等
  • Python 面向对象编程基础:类与对象初体验