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

生产者-消费者问题

生产者-消费者问题

系统中有一组生产者进程和一组消费者进程,生产者进程每次生一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用

生产者和消费者共享一个初始为空,大小为n的缓冲区

缓冲区没有满的时候,生产者才能把产品放入缓冲区,否则必须等待。

只有缓冲区没空的时候,消费者才能从中取出产品,否则必须等待。

缓冲区是一种临界资源,各进程必须互斥访问

semaphore mutex=1;//互斥信号量,实现对缓冲区的互斥访问
semaphore empty=n;//同步信号量,代表空闲缓冲区的数量
semaphore full=0;//同步信号量,代表产品的数量
producer(){while(1){生产一个产品;P(empty);//消耗一个空闲缓冲区P(mutex);放入;V(mutex);V(full);//消耗一个非空缓冲区,代表增加了一个产品}
}
consumer(){while(1){P(full);//消耗一个产品P(mutex);取出;V(mutex);V(empty);//增加一个空闲缓冲区使用产品;}
}

互斥的P操作,一定要在实现同步的P操作之后,顺序不能颠倒

但是V操作可以随意交换顺序,不会导致进程阻塞

http://www.gsyq.cn/news/13903.html

相关文章:

  • QAction的使用
  • flow.tcl
  • sg.测试 PySimpleGUI 取值方法
  • 剥开参数看本质:2025 年手机性能与处理器深度解析 - 详解
  • HT-SBTC-2-10L 是成都恒利泰推出的 5–1000 MHz
  • Gitee DevOps:本土化基因驱动中国企业研发效能革命
  • 每周读书与学习-初识JMeter 元件(三)
  • 划分子网与连通性
  • Gitee:中国开发者生态的崛起与数字化转型新动能
  • 详细介绍:HDFS和MapReduce——Hadoop的两大核心技
  • 完整教程:大模型agent综述:A Survey on Large Language Model based Autonomous Agents
  • 三脚电感在报警器芯片里的实际作用与用法
  • jenkins maven nacos springboot profile实现多环境配置
  • 互斥锁和信号量机制
  • 深度学习项目全流程实践与核心技术解析:从数据处理到模型优化 - 教程
  • 直接使用的NLog帮助类
  • 【每日一面】setTimeout 延时为 0 的情况
  • honeywell扫码枪设置
  • Python3 pip 详解
  • 不同网络间文件互传怎么实现?
  • sway wayland下 wps-office无法输入中文
  • Spring XML 设置简介
  • 术语俗话 --- 什么是mib
  • 分享一个YTB视频下载器
  • 基于Python+Vue开发的家具商城管理系统源码+运行步骤
  • Arraylist集合原理分析
  • 免费开源的百度文库平替!支持多格式文档预览与存储!
  • 写假数据
  • 详细介绍:Spring MVC 请求执行流程详解
  • Aduro电涌保护器特惠:6口插座与2USB端口52%折扣