生产者消费者模型

简介:

生产者消费者问题 最基本的是生产者生产出数据,消费者来获取数据,但是生产者消费者模型必须保证的是:

1 同一时间只会有一个生产者或者一个消费者会进行生产/消费

2 生产者或者消费者会操作一个缓冲区,这个缓冲区有大小

3 如果缓冲区数据达到大小上限,生产者没办法往缓冲区生产数据

4 如果缓冲区数据达到大小下限(即缓冲区内没有数据),消费者没有办法从缓冲区中消费数据

基于上面这几个条件,一个系统就满足生产者消费者模型了。

注释

生产者消费者模式一定是对并发来说的。多个线程或者多个进程对一个数据来进行操作才会需要用到生产者消费者模型,如果单线程的话,是不会有这个模型的。

并发一定就会涉及到锁的机制了,同一时间只有一个生产者或者一个消费者进行生产/消费,这条必须会使用到锁




本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/p/3460354.html,如需转载请自行联系原作者


相关文章
|
Python
pycharm使用debug的时候遇到断点不停的问题
pycharm使用debug的时候遇到断点不停的问题
1113 0
|
Java Spring
RestTemplate上传文件解决方案
当对接文件上传模块时,需要对接上传文件的接口,而我们模块的数据是以字节数组存在的(已经操作过了的字节数组,存在于内存中)接口是以form-data的形式上传的,其中需要上传MultipartFIle,如果使用MultipartFile放入到请求的 fromMap中,然后再上传这个文件,会报(ByteArrayInputStream no serialized)的错误,也就是没有注入对应的bean的错误。。
5044 0
|
3月前
|
机器学习/深度学习 前端开发 数据可视化
Kimi K2 开源发布:擅长代码与 Agentic 任务!
今天,月之暗面正式发布 Kimi K2 模型,并同步开源。Kimi K2 是一款具备更强代码能力、更擅长通用 Agent 任务的 MoE 架构基础模型,总参数 1T,激活参数 32B。
683 0
|
缓存
SVN Access to ‘/svn/Test/!svn/me’ forbidden,不能更新解决办法
今天上班,使用公司配置的电脑进行项目的更新。SVN报如下错误,   SVN Access to ‘/svn/Test/!svn/me’ forbidden,不能更新解决办法   很有意思; 开始以为自己的SVN安装有错误; 重装了几次都是同样的异常,经过上网查,才知道,是先前SVN用户缓存的原因。
3365 0
|
12月前
|
前端开发 JavaScript API
深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
585 4
|
存储 算法 数据挖掘
向量数据库技术分享
向量数据库主要用于支持高效的向量检索场景(以图搜图、以文搜图等),通过本次培训可以掌握向量数据库的核心理论以及两种向量索引技术的特点、场景与算法原理,并通过实战案例掌握向量数据库的应用与性能优化策略。
1363 3
|
存储 JSON Java
SpringBoot @Value 读取配置,太强大了
SpringBoot @Value 读取配置,太强大了
162 0
|
Linux Shell iOS开发
ModuleNotFoundError: No module named 'readline' 是什么问题
【6月更文挑战第17天】ModuleNotFoundError: No module named 'readline' 是什么问题
1304 1
|
网络协议 Java 测试技术
配置中心原理和选型:Disconf、Apollo、Spring Cloud Config 和 Nacos
学完注册中心,再看配置中心这块,感觉简单很多,因为很多知识原理是相辅相成的
8099 0
配置中心原理和选型:Disconf、Apollo、Spring Cloud Config 和 Nacos
YOLOv8改进 | SAConv可切换空洞卷积(附修改后的C2f+Bottleneck)
YOLOv8改进 | SAConv可切换空洞卷积(附修改后的C2f+Bottleneck)
604 0