生产者 - 消费者问题

假设在生产者和消费者之间的公用缓冲池具有n个缓冲区,可利用互斥信号量mutex实现诸进程的互斥使用;利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量。
又假设这些生产者和消费者互相等效,只要缓冲池未满,生产者便可将消息送入缓冲池;只要缓冲池未空,消费者便可从缓冲池取走一个消息

int in =0,out = 0;
item buffer[n];                         //缓冲区列表
semaphore mutex = 1,empty = n,full = 0;  //互斥信号量为1,起始缓冲区为空,没有产品
void producer(){            //生产者进程do{producer an item nextp;           ...P(empty);                //申请一个空闲缓存区P(mutex);                //申请使用缓冲池buffer[in] = nextp;       //向缓冲池投放产品in = (in+1)%n;          V(mutex);               //释放使用缓冲池的资源V(full);                //缓冲池的产品数量加1}while(TRUE);
}
void consumer(){do{producer an item nextp;P(full);          //产品数量减1P(mutex);           //申请使用缓冲池nextc = buffer[out]; out = (out+1)%n;    V(mutex);          //释放使用缓冲池的资源V(empty);           //缓冲池空闲区加1consumer the item in nextc;   //消费一个产品...}while(TRUE);
}
void main(){cobeginproducer();consumer();coend
}

操作系统 - - 生产者—消费者问题(PV操作)代码显示相关推荐

  1. java信号量生产者_java信号量PV操作 解决生产者-消费者问题

    package test1; /** * 该例子演示生产者和消费者的问题(设只有一个缓存空间.一个消费者和一个生产者) * MySystem类定义了缓冲区个数以及信号量 * @author HYY * ...

  2. kafka学习总结(含java生产者、消费者、Topic操作代码)

    kafka(http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率.它的优点是能够直接使用磁盘进行存储.线性读写.速度快,避免了数据在JVM内存和系统内 ...

  3. 生产者和消费者(PV操作、共享内存)

    生产者一直在往共享内存中写数据 #include<sys/sem.h> #include<sys/shm.h> #include<stdio.h> #include ...

  4. 操作系统生产者消费者问题实验报告

    操作系统实验报告 进程通信 1. 问题描述及需求分析: 问题描述 本次实验实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素. ...

  5. 操作系统 —— 生产者消费者模型

    文章目录 1. 生产者消费者模型的理解 1.1 串行的概念 1.2 并行的概念 1.3 简单总结: 2. 基于阻塞队列(block queue)实现此模型 2.1 阻塞队列的实现 2.2 使用阻塞队列 ...

  6. (二十二)操作系统-生产者·消费者问题

    文章目录 一.问题描述 二.问题分析 三.PV操作题目分析步骤 1. 关系分析 2. 整理思路 3. 设置信号量 4. 编写代码 四.能否改变相邻P.V操作的顺序? 五.小结 1. PV操作题目的解题 ...

  7. 操作系统—生产者消费者

    问题描述及需求分析 实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素.要求实现生产者与消费者之间的同步,即当缓冲池为空时,消 ...

  8. 三、操作系统——生产者-消费者问题(两个同步一个互斥)

    一.问题描述 信号量机制实现进程互斥的步骤: 设置初值为1的互斥信号量 在访问临界区之间进行P操作 在访问完临界区之后进行V操作 信号量机制实现进程同步的步骤: 设置初值为0的同步信号量 在前操作之后 ...

  9. 操作系统复习——信号量与PV操作

    信号量与PV操作 问题的提出 TS或swap指令管理临界区,采用忙式轮询,效率低 关开中断管理临界区,不便交给用户程序使用 信号量的构思 一种可动态定义的软件资源:信号量 核心数据结构:等待进程队列 ...

最新文章

  1. PHP中MD5函数漏洞
  2. 从Uber微服务看最佳实践如何炼成?
  3. 于python保留字的是_《于》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  4. Vimdiff---VIM的比较和合并工具
  5. sql2005数据导入出错问题
  6. 腾讯招.NET要求以下几点,你准备好了吗?
  7. 任务app源码运营版本
  8. 一个MySQL 5.7 分区表性能下降的案例分析
  9. java 处理视频帧_如何将视频处理成每帧的图片?.最好是java实现..
  10. 4_2 刽子手游戏(UVa489)自顶向下逐步求精法
  11. 入选《PHP领域内容榜》,感谢CSDN,感谢各位浏览过我的朋友
  12. stm32f103c6t6制作音乐频谱分析仪
  13. 如何使用阿里云的NAS云文件存储服务
  14. 阿里巴巴字体图标库使用及更新方法
  15. U盘启动盘cmd制作
  16. 2021-03-17 工作中服务乱码问题解决措施
  17. 第2阶段 第12讲 XMLHTTP协议
  18. alert弹出[object Object]解决方法
  19. 高考落榜怎么办,奉劝学弟学妹们一些事情,请一定要擦亮眼睛
  20. SEO(搜索引擎优化)是不是任何行业、产品都适合做SEO?

热门文章

  1. 河北大学计算机类信息安全专业就业前景,2018信息安全专业就业前景和就业方向分析...
  2. 穿透内网远程访问群晖NAS
  3. 如何进行产品定位(上)
  4. ubuntu卸载火狐浏览器(亲测有效)
  5. kafka的安装及基本使用
  6. Spring boot 日志分档基于log4j2.yml 配置文件
  7. Quasi-Newton Method--LBFGS
  8. Android 百度文字识别(详细步骤+源码)
  9. ps制作的html手机怎么使用,ps制作手机的教程
  10. Excel下的数据挖掘:学生成绩统计分析实战之前言