首页 > 其他分享 >生产者消费者问题

生产者消费者问题

时间:2022-10-21 01:34:47浏览次数:45  
标签:消费者 生产者 问题 线程 缓冲区 数据 读取数据

生产者/消费者问题,也被称为有限缓冲问题。可以描述为:两个或者更多的线程共享同一个缓冲区,其中一个或多个线程作为“生产者“会不断的向缓冲区中添加数据,另一个或者多个线程作为”消费者"从缓冲区中取走数据 生产者和消费者必须互斥的使用缓冲区; 缓冲区空的时候,消费者不能读取数据; 缓冲区满的时候,生产者不能添加数据   模型优点: ①解耦。多了一个缓冲区,生产者和消费者并不直接相互调用,这样双方代码发生变化,互不影响。就是把生产者和消费者之间的强耦合解开,变成生产者和缓冲区,消费者和缓冲区之间的弱耦合 ②支持并发。如果消费者直接从生产者拿数据,则消费者需要等待生产者生产数据,同样生产者需要等待消费者消费数据。而有了生产者/消费者模型,生产者和消费者可以是两个独立的并发主体。生产者把制造出来的数据添加到缓冲区,就可以再去生产下一个数据了。而消费者也是一样的,从缓冲区中读取数据,不需要等待生产者。这样,生产者和消费者就可以并发执行 ③支持忙闲不均。如果消费者直接从生产者这里拿数据,而生产者生产数据很慢,消费者消费数据很快,或者生产者生产数据很多,消费者消费数据很慢。都会造成占用CPU的时间片白白浪费。生产者/消费者模型中,生产者只需要将生产的数据添加到缓冲区,缓冲区满了就不生产了。消费者从缓冲区中读取数据,缓冲区空了就不消费了,使得生产者/消费者的处理能力达到一个动态的平衡

标签:消费者,生产者,问题,线程,缓冲区,数据,读取数据
From: https://www.cnblogs.com/dhwcpp/p/16812149.html

相关文章

  • sentinel运行报错问题处理:Unable to make protected final java.lang.Class java.lan
    使用命令:java-jarsentinel-dashboard-1.8.3.jar启动后异常情况如下java.lang.IllegalStateException:Cannotloadconfigurationclass:com.alibaba.csp.sentinel.das......
  • 力扣605(java&python)-种花问题(简单)
    题目:假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给你一个整数数组  flowerbed表示花坛,由若......
  • electron升级到20版本后,禁用第三方cookie、跨域问题解决方法
    最近公司的electron项目从13升级到最新的20版本,导致qq登录失效问题,特此记录1.qq扫码登录失效升级后之前的老版本可以扫码登录,但是新版本扫码登录后,页面直接刷新,没有登录......
  • 记一次修复BloodHound导入数据失败问题
    我的BloodHound在大概2021年就安装了,之后没用过几回。最近由于一些内网渗透学习的原因,又重回BloodHound的怀抱。但很显然,他并不友好。我在信息收集结束后,尝试导入数据,却发......
  • 分组背包问题
    [NOIP2006]金明的预算方案https://ac.nowcoder.com/acm/problem/16671题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞......
  • 生产者消费者模式
    生产者消费者模式(Java实现)定义在⼀个⽣产环境中,⽣产者和消费者在同⼀时间段内共享同⼀块缓冲区,⽣产者负责向缓冲区添加数据,消费者负责从缓冲区取出数据使用资源类......
  • 将txt转化为csv的方法和遇到问题
    一、无法修改扩展名步骤如下二、转换之后所有数据都挤在第一列win10系统修改文件扩展名只需4部,打开我的电脑->查看->选择->查看->取消勾选(已知隐藏文件的扩展名)->确定。......
  • sql语句排序无效的问题
    数据可视化时因为数据类型排序无效的问题:这是由于你要排序的类型是String类型的而ORDERBY方法排序要求整数型。这就需要在ORDERBY后加CAST(需要排序的字段A......
  • 解决004--Loading local data is disabled; this must be enabled on both the client
    因为下载了SQLyog的ultimate版本,现在就可以导入外部的数据了。有着之前使用insertinto插入语句来添加近50条有着大概10个字段的记录的经历之后,本着能够导入现成的数据就导......
  • 【收藏看】关于面试常见问题:Redis有哪些数据结构?
    面试场景  Redis作为时下最火的缓存中间件之一,面试的时候面试官肯定会问Redis的相关内容,而往往问的第一个问题就是:你知道Redis有哪几种数据结构吗?你们项目中使用......