设计模式之生产者消费者模式的使用分析 转

生产者消费者模式并不是GOF提出的23种设计模式之一,23种设计模式都是建立在面向对象的基础之上的,但其实面向过程的编程中也有很多高效的编程模式,生产者消费者模式便是其中之一,它是我们编程过程中最常用的一种设计模式。 生产者消费者模式是为了解决哪一类问题而产生的呢?在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从缓冲区取出数据。 生产者消费者的关系如下图所示:

生产者消费者模式的原理描述: (1)生产者仅仅在仓储未满时候生产,仓满则停止生产。 (2)消费者仅仅在仓储有产品时候才能消费,仓空则等待。 (3)当消费者发现仓储没产品可消费时候会通知生产者生产。 (4)生产者在生产出可消费产品时候,应该通知等待的消费者去消费

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏思考的代码世界

大流量网站该如何配置优化

1570
来自专栏编程坑太多

『高级篇』docker之服务编排了解Mesos(22)

1194
来自专栏FreeBuf

通过USB调试攻击固件安装后门以实现“邪恶女佣”攻击

调试机制是帮助跟踪几乎所有平台上的故障源的标准组件。一般主要在平台生产之前使用,但也经常用于翻新和修复返回的平台。安全研究人员可以多次使用调试特性测试攻击,包括...

1134
来自专栏Andy的技术专栏

谈下mysql中间件(问题域、业内组件)

这段时间团队在梳理mysql使用上的一些痛点(分库分表、读写分离、权限控制、监控告警、日志审计等),也调研了业内一些mysql中间件的实现,这里把对问题域的思考...

4734
来自专栏蛋未明的专栏

myweb0.3更新说明

1455
来自专栏码字搬砖

java包分类包括java.*,sun.*

最近在学习Class加载的过程,无意中看到ClassLoader中有sun开头的类,甚是奇怪,随知孤陋寡闻了,不由感叹到java果然博大精深,在下拜服。特此记录...

2952
来自专栏FreeBuf

某云用户网站入侵应急响应

1、情况概述 该案例是前期应急处置的一起因安全问题导致的内网不稳定的情况。写下来,和大家一起讨论应急响应的一些思路及其中间遇到的一些坑,欢迎大牛指点、讨论。 情...

3007
来自专栏GA小站

Google Analytics数据保护政策变更解读(201804)

相信很多管理员一大早就收到一封谷歌分析的关于数据保存和数据保护协议变更的通知邮件,有些人就问,这会不会对Clientid,Userid有什么影响,或对我们有什么...

762
来自专栏BestSDK

英特尔曝出重大安全漏洞:亚马逊、微软等众多云服务受影响

该漏洞存在于英特尔的 x86 硬件之中,无法通过微码升级来解决,必须在系统层面通过安装软件、或者购买没有设计缺陷的新处理器来解决——所以包括苹果 64 位 ma...

2883
来自专栏FreeBuf

Hackertarget:一款帮助组织发现攻击面的强大工具

今天给大家介绍的是一款名叫HackerTarget ToolKit的工具,这款工具实际上是一款网络情报工具,它可以帮助组织快速地发现自家网络系统中存在的攻击面。

1041

扫码关注云+社区

领取腾讯云代金券