进程互斥、同步--多生产者多消费者问题

2023-05-16

1、问题描述:有一个缓冲区,生产者1和生产者2分别生产产品1和产品2,消费者1和消费者2分别消费产品1和产品2。只有当缓冲区空时,生产者才可以向缓冲区生产产品。当缓冲区不空时消费者1或者2才可以消费与之对应的产品。
2、关系分析
互斥关系:缓冲区只能互斥访问
mutex=1; //实现互斥访问缓冲区
同步关系:
(1)生产者1生产产品1后,消费者1才能消费
product1=0; // 缓冲区的产品1
(2)生产者2生产产品2后,消费者2才能消费
product2=0; // 缓冲区的产品2
(3)消费者消费产品后,生产者才能生产
empty=1; //缓冲区空闲区
3、代码实现

//生产者1
productor1(){
	while(1){
		P(empty);
		P(mutex);
		产品1放入缓冲区;
		V(mutex);
		V(product1);
	}
}
//生产者2
productor2(){
	while(1){
		P(empty);
		P(mutex);
		产品2放入缓冲区;
		P(mutex);
		V(product2);
	}
}
//消费者1
consumer1(){
	while(1){
		P(product1);
		P(mutex);
		消费产品1;
		V(mutex);
		V(empty);
	}
}
//消费者2
consumer2(){
	while(1){
		P(product2);
		P(mutex);
		消费产品2;
		V(mutex);
		V(empty);
	}
}

注意:由于缓冲区大小为1,本问题可以不设置互斥信号量,当缓冲区大于等于2时,需要设置互斥信号量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程互斥、同步--多生产者多消费者问题 的相关文章

  • Java快排实现

    快速排序 xff1a 基本实现思路 取一个标准位置的数字 用其他位置的数字和标准数进行对比 如果比标准数大 则放到标准数的右边 xff0c 如果比标准数小 则放到标准数的左边 然后使用递归进行持续比对 xff08 注意 递归要有入口 如果当
  • Java 后端项目部署到服务器使用ip访问

    Java 后端项目部署到服务器使用ip访问 一 Maven打包项目 打包成功 xff0c 该路径下会生成一个jar包 二 部署项目 打开服务器 创建文件夹目录用于存放上传的jar包并且进入该文件夹 使用rz命令上传打好的jar包 上传完成
  • 中缀表达式转逆波兰表达式

    中缀表达式转后缀表达式 逆波兰表达式 op 43 icp06421isp01536 思路 假设表达式为string ex 61 34 a 43 b c d 34 将表达式处理为 34 a 43 b c d 34 以 做末尾标识 初始时 栈s
  • vs2022 安装boost库并导入websocketpp示例

    vs2022 安装boost库并导入websocketpp示例 下载并编译boost 因为websocketpp依赖于boost中的asio库 xff0c 所以需要先安装boost库 步骤如下 xff1a 下载源码 boost官网 点击版本
  • P8814 [CSP-J 2022] 解密 题解(二元一次方程)

    CSP J 2022 解密 题目描述 给定一个正整数 k k k xff0c 有 k k k 次询问 xff0c 每次给定三个正整数
  • P1011 [NOIP1998 提高组] 车站 (用方程解斐波那契数列)

    NOIP1998 提高组 车站 题目描述 火车从始发站 xff08 称为第 1 1 1 站 xff09 开出 xff0c 在始发站上车的人数为 a a a xff0c 然
  • P1014 [NOIP1999 普及组] Cantor 表

    NOIP1999 普及组 Cantor 表 题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的 他是用下面这一张表来证明这一命题的 xff1a 1 1 1 1 1 1
  • devc++ 输入中文变成问号 和中文乱码问题

    解决方法如下 第一步 打开设置 时间和语言 首选语言 添加中文 xff08 简体 xff09 并设置为首选语言 第二步 打开 管理语言设置 更改系统区域设置 非unicode字符所使用的语言 xff0c 改成中文简体
  • 关于c++动态二维数组

    最近在刷题的时候 想要动态创建一个二维数组 于是写出如下代码 int n a cin gt gt n a 61 new int n n 然后就发现报错了 原来是c 43 43 不支持直接这样创建二维数组 那么怎么创建动态二维数组呢 我暂时知
  • PTA L1-006 最小连续因子

    原题链接 https pintia cn problem sets 994805046380707840 problems 994805138600869888 N有两种情况 1 素数 输出1 和 N 2 合数 因为我们求的是连续因子 不需
  • 什么是数据中台?全面解读数据中台

    伴随着云计算 大数据 人工智能等IT技术迅速发展及与传统行业实现快速融合 xff0c 一场由数字化和智能化转型带来的产业变革正在孕育 随着企业规模不断扩大 业务多元化 中台服务架构的应运而生 中台 早期是由美军的作战体系演化而来的 xff0
  • Running as root without --no-sandbox is not supported

    Running as root without no sandbox is not supported 背景 xff1a Anki安装 在root下启动Anki xff0c 安装时 xff0c 报错 25670 25670 0526 160
  • AOP 的详细说明以及基本的使用

    AOP复习 1 AOP简介 AOP xff08 Aspect OrientedProgramming xff0c 面向切面编程 xff09 xff0c 可以说是OOP xff08 Object Oriented Programing xff
  • Windows实现开机自动登录(Windows免密登陆)

    Windows实现开机自动登录 xff08 Windows免密登录 xff09 1 Win 43 R打开命令窗口 2 输入netplwiz并运行 xff0c 此处默认为勾选状态 xff0c 此时取消勾选 3 点击确定 xff0c 输入当前本
  • SpringBoot的基本介绍、环境和版本

    SPRINGBOOT 简介 Spring Boot 是由 Pivotal 团队提供的全新框架 xff0c 其设计目的是用来简化新 Spring 应 用的初始搭建以及开发过程 该框架使用了特定的方式来进行配置 xff0c 从而使开发人员不 再
  • Ubuntu无法调整分辨率问题

    起因 xff1a 由于疫情在家 xff0c 需要使用学校服务器 xff0c 但是学校的内网有网络隔离 xff0c 向学校申请VPN比较麻烦 xff0c 所以直接买了ToDesk的会员 xff0c 但是连接之后发现分辨率是1024 768 x
  • Android studio 导入github下载的项目 报错:Cause: unable to find valid certification path to requested target

    目录 一 前言 二 分析 1 修改项目文件夹下的build gradle 2 修改gradle wrapper properties 3 修改app文件夹下的build gradle 三 后记 1 Annotation processors
  • 数字信号处理基础----信号的调制

    1 信号的调制 由于光速为波长和频率的成绩 xff0c 因此当频率很低的时候 xff0c 要发送电磁波的时候 xff0c 需要的天线很长 xff0c 当频率被调制到高频的时候 xff0c 就可以将天线做短 1 1 单音信号的调制 若现在有一
  • SSM项目搭建(一)spring+springMVC+Mybatis整合配置文件

    1 spring mvc xml 这里有一点要注意 xff0c lt 注解扫描包 gt 的配置要符合自己项目的package名称 下面附上我的目录图片 xff1a 这里不要一味的复制粘贴过去 xff0c 记得修改成自己的包目录 想必大概了解
  • Expression #3 of ORDER BY clause is not in SELECT list,references column ‘xx‘which is not in SELECT

    参考 https www jb51 net article 182846 htm 具体报错 Expression 3 of ORDER BY clause is not in SELECT list references column 39

随机推荐

  • Windows 10上不使用MicroSoft Store下载安装MicroSoft Todo

    一般我们下载微软的应用时 xff0c 需要从 Microsoft Store 中下载 但是由于Windows系统问题 xff0c 导致我们无法从MicroSoft Store中下载软件 xff1b 或者由于个人原因 xff0c 不想从Mic
  • 必看: 原来PCIe技术原理这么简单!

    硬盘是大家都很熟悉的设备 xff0c 一路走来 xff0c 从HDD到SSD xff0c 从SATA到NVMe xff0c 作为NVMe SSD的前端接口 xff0c PCIe再次进入我们的视野 作为x86体系关键的一环 xff0c PCI
  • 查看会议或期刊在CCF中的级别(几类会议、A/B/C)

    首先进入 中国计算机学会 CCF的 官网 在搜索框中搜索想要查找的会议 以AAAI为例 xff0c 在搜索结果中 xff0c 找到我们需要的记录 筛查的方式如下 xff1a 标题为会议的名称 xff1a 如AAAI搜索内容中的url中有Ac
  • Endnote批量导入文献

    导入一个文献 在导入文献之前 xff0c 需要下载文献的引用enw文件 xff0c 该文件是Endnote使用的数据库导入文件 xff0c 专门用于将参考文献导入至Endnote中 点击Google学术中文献的 引用 xff0c 在弹出的窗
  • 检查pytorch是否安装成功、查看torch和cuda的版本

    方式 1 在安装完成pytorch和cudatoolkit之后 xff0c 需要检查一下是否安装成功 xff0c 可以直接查看当前环境下安装的所有包来验证 xff1a conda list 可以看到pytorch版本和cuda的版本分别是1
  • 【工具】向日葵远程控制之后键盘失效、自动锁定按住Alt键

    在使用向日葵软件远程控制过别人的电脑后 xff0c 偶尔会出现一个BUG xff0c 就是自己键盘的ALT自动锁定了 xff0c 好像始终按着ALT键不放 xff0c 导致键盘无法使用 主要原因就是 xff0c 在远程控制时 xff0c 使
  • 上采样和反卷积 Up-sampling and Transposed Convolution (Deconvolution)

    文章目录 1 卷积操作2 卷积矩阵3 反卷积4 反卷积矩阵5 使用卷积计算反卷积6 总结参考文献 使用反卷积 xff08 Transposed Convolution xff09 来进行上采样操作 xff0c 不需要借助插值方法 xff0c
  • 【Python】执行python脚本命令,向argparse传参时出现 error: unrecognized arguments: True 错误

    错误 在使用python脚本命令 xff0c 向argparse传递参数时 xff0c 报了下面的错误 xff1a error ununrecognized arguments True 脚本命令及argparse代码如下 xff08 为了
  • 【工具】Typora 自定义快捷键

    在软件中打开官方教程 依次点击 xff1a 文件 gt 偏好设置 点击 偏好设置 gt 通用 gt 自定义快捷键 会打开官方对于修改快捷键的说明文档 xff1a https support typora io Shortcut Keys c
  • JSONArray 删除元素(JSONObject删除元素JSONObject)

    span class token class name JSONObject span o1 span class token operator 61 span span class token keyword new span span
  • Android入门 初探Databinding的使用

    使用数据绑定库DataBinding实现篮球计分功能 参考资源 Android开发教程 xff08 2019最新版 使用JetPack xff09 数据绑定库是一种支持库 xff0c 借助该库 xff0c 您可以使用声明性格式 xff08
  • Java多线程之生产消费模型

    生产消费模型 所谓生产消费模型 xff0c 是通过一个容器来解决生产者和消费者的强耦合问题 通俗的讲 xff0c 就是生产者不断的生产 xff0c 消费之也在不断消费 xff0c 消费者消费的产品是生产者生产的 xff0c 这就必然存在一个
  • 阿里中台(看图不说话)

    阿里中台战略 xff0c 源于阿里高管15年中参观世位于芬兰界上最成功的移动游戏公司Supercell Supercell的核心竞争力就在多年的游戏研发中积累了非常科学的研发方法和体系 xff0c 包括游戏开发过程中公共 通用的游戏开发素材
  • Android Studio3.5下创建的BottomNavigationView项目无法使用NoActionBar的处理

    在使用Android Studio3 5下创建的BottomNavigationView项目时因为BottomNavigationView使用fragment控件的NavHostFragment进行Fragment切换 xff0c 但却无法
  • SQL Server like 的简单用法解释 模糊查询

    一 问题或解决方法应用场景 使用SQL Server 查询时 xff0c 经常会使用模糊查询 xff0c 需要查询包含的指定字符串内容 下面的内容 xff0c 我简单总结下 xff0c like 的常用方式 xff08 电脑没法发图片 xf
  • Java的生产者消费者模型

    前言 学完了线程后 xff0c 我又去找了一些线程相关的练习题来练手 xff0c 其中印象最深的就是生产者消费者模型这一块 xff0c 为什么呢 xff0c 因为它每一篇练习题里都有 xff0c 开始没看懂 xff0c 后面就去仔细研究了一
  • IDEA创建vue项目及vue项目中路由的配置

    首先参考了这篇文章用idea创建了vue项目 然后我想直接加 login就访问到我新建的Login vue文件 xff0c 发现不行 xff08 小白有点天真了 xff09 得知需要配置路由才能这样访问到 xff0c 但配置的过程到处碰壁
  • KBQA知识问答概述

    问答系统历史 xff1a 基于模板的问答专家系统 gt 基于信息检索的问答 gt 基于社区的问答 gt 基于知识库的问答 xff08 受益于维基百科等 xff09 问答形式分类 xff1a 一问一答 xff0c 交互式问答 xff0c 阅读
  • 2021-10-15Ubuntu开机进入tty1,无法进入图形界面

    1 tty1界面输入账号密码 2 输入指令 xff1a sudo apt install ubuntu desktop 3 重启 xff1a reboot
  • 进程互斥、同步--多生产者多消费者问题

    1 问题描述 xff1a 有一个缓冲区 xff0c 生产者1和生产者2分别生产产品1和产品2 xff0c 消费者1和消费者2分别消费产品1和产品2 只有当缓冲区空时 xff0c 生产者才可以向缓冲区生产产品 当缓冲区不空时消费者1或者2才可