操作系统 - - 生产者—消费者问题(PV操作)代码显示
生产者 - 消费者问题
假设在生产者和消费者之间的公用缓冲池具有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操作)代码显示相关推荐
- java信号量生产者_java信号量PV操作 解决生产者-消费者问题
package test1; /** * 该例子演示生产者和消费者的问题(设只有一个缓存空间.一个消费者和一个生产者) * MySystem类定义了缓冲区个数以及信号量 * @author HYY * ...
- kafka学习总结(含java生产者、消费者、Topic操作代码)
kafka(http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率.它的优点是能够直接使用磁盘进行存储.线性读写.速度快,避免了数据在JVM内存和系统内 ...
- 生产者和消费者(PV操作、共享内存)
生产者一直在往共享内存中写数据 #include<sys/sem.h> #include<sys/shm.h> #include<stdio.h> #include ...
- 操作系统生产者消费者问题实验报告
操作系统实验报告 进程通信 1. 问题描述及需求分析: 问题描述 本次实验实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素. ...
- 操作系统 —— 生产者消费者模型
文章目录 1. 生产者消费者模型的理解 1.1 串行的概念 1.2 并行的概念 1.3 简单总结: 2. 基于阻塞队列(block queue)实现此模型 2.1 阻塞队列的实现 2.2 使用阻塞队列 ...
- (二十二)操作系统-生产者·消费者问题
文章目录 一.问题描述 二.问题分析 三.PV操作题目分析步骤 1. 关系分析 2. 整理思路 3. 设置信号量 4. 编写代码 四.能否改变相邻P.V操作的顺序? 五.小结 1. PV操作题目的解题 ...
- 操作系统—生产者消费者
问题描述及需求分析 实现生产者和消费者之间的通信,即生产者-消费者问题.生产者一次生成一个元素放入缓冲池中,消费者一次可以从缓冲池中取出一个元素.要求实现生产者与消费者之间的同步,即当缓冲池为空时,消 ...
- 三、操作系统——生产者-消费者问题(两个同步一个互斥)
一.问题描述 信号量机制实现进程互斥的步骤: 设置初值为1的互斥信号量 在访问临界区之间进行P操作 在访问完临界区之后进行V操作 信号量机制实现进程同步的步骤: 设置初值为0的同步信号量 在前操作之后 ...
- 操作系统复习——信号量与PV操作
信号量与PV操作 问题的提出 TS或swap指令管理临界区,采用忙式轮询,效率低 关开中断管理临界区,不便交给用户程序使用 信号量的构思 一种可动态定义的软件资源:信号量 核心数据结构:等待进程队列 ...
最新文章
- PHP中MD5函数漏洞
- 从Uber微服务看最佳实践如何炼成?
- 于python保留字的是_《于》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
- Vimdiff---VIM的比较和合并工具
- sql2005数据导入出错问题
- 腾讯招.NET要求以下几点,你准备好了吗?
- 任务app源码运营版本
- 一个MySQL 5.7 分区表性能下降的案例分析
- java 处理视频帧_如何将视频处理成每帧的图片?.最好是java实现..
- 4_2 刽子手游戏(UVa489)自顶向下逐步求精法
- 入选《PHP领域内容榜》,感谢CSDN,感谢各位浏览过我的朋友
- stm32f103c6t6制作音乐频谱分析仪
- 如何使用阿里云的NAS云文件存储服务
- 阿里巴巴字体图标库使用及更新方法
- U盘启动盘cmd制作
- 2021-03-17 工作中服务乱码问题解决措施
- 第2阶段 第12讲 XMLHTTP协议
- alert弹出[object Object]解决方法
- 高考落榜怎么办,奉劝学弟学妹们一些事情,请一定要擦亮眼睛
- SEO(搜索引擎优化)是不是任何行业、产品都适合做SEO?