当前位置: 首页 > news >正文

Golang高并发:生产者消费者模型

Golang高并发:生产者消费者模型

我们本篇博文主要通过几个例子来介绍生产者消费者模型。

案例1

下面看看第一个例子中的生产者协程。

//生产者协程go func() {for  {product := strconv.Itoa(time.Now().Nanosecond())chanShop <- "商品" + productfmt.Println("生产了商品",product)time.Sleep(1000 * time.Millisecond)}}()

生产者协程就是源源不断的生产,将时间转化为字符串,然后源源不断的产生产品字符串。此处用到了strconv.Itoa(),是将整型转换为字符串类型。time.Now()是当前的时间,而使用Nanosecond()是将其转换为纳秒。然后将得到的产品序列号字符串放入视频管道,然后输出生产了什么产品,然后睡一秒,然后接着生产。

至于消费者协程,我相信你已经猜到了是什么了,我们也来看一看吧。

//消费者协程go func() {for{product := <-chanShopfmt.Println("消费了产品",product)time.Sleep(time.Second)}}() 

每次从商品管道取一个产品,然后输出消费了什么产品,然后睡一秒,然后继续消费。

再来看看这个案例的主协程

//主协程for  {time.Sleep(time.Second)}

运行结果是

消费了产品 商品607861100
生产了商品 607861100
生产了商品 607929500
消费了产品 商品607929500
生产了商品 608013000
消费了产品 商品608013000
生产了商品 608018400
消费了产品 商品608018400

没错,源源不断的生产消费、生产消费。

案例2

我们再来看看第二个案例,这个案例,我们引入了”物流“的概念。

先上主函数给各位读者老爷看看吧:

func main() {chanStorage := make(chan string ,100)chanShop := make(chan string, 100)go producer(chanStorage)go logistics(chanStorage,chanShop)go consumer(chanShop)for  {time.Sleep(time.Second)}
}

主要是建立商店和物流两条管道,然后建立生产者、消费者、物流三条协程,然后主协程一直不go die

然后先来看看生产者协程

func producer(chanStorage chan string)  {for i:=0;i<10;i++{product := strconv.Itoa(time.Now().Nanosecond())chanStorage <- "产品"+productfmt.Println("生产了产品",product)time.Sleep(time.Second)}close(chanStorage)
}

和第一个案例一样,不过我们只生产10个产品放入仓库,然后关闭了仓库。

然后看看物流协程是干了些什么:

func logistics(chanStroge,chanShop chan string)  {for p:= range chanStroge{fmt.Println("物流完成转运",p)chanShop <- p}fmt.Println("商品转运完毕!")
}

源源不断扫描仓库,拿出商品然后将商品转运到商店。当生产者关闭仓库后,物流也停止转运了。

消费者不断在消费,然后看看消费者:

func consumer(chanShop chan string)  {for{product := <-chanShopfmt.Println("消费了产品",product)}
}

等来一件商品,就卖出去。

然后看看运行结果

生产了产品 605763200物流完成转运 产品605763200消费了产品 产品605763200生产了产品 605826700物流完成转运 产品605826700消费了产品 产品605826700生产了产品 619889800物流完成转运 产品619889800消费了产品 产品619889800生产了产品 619906200物流完成转运 产品619906200消费了产品 产品619906200生产了产品 627948700物流完成转运 产品627948700消费了产品 产品627948700

我们可以看到,生产、转运、消费几乎是同时的。

因为我们当物流公司停止运物资时,商店也要关门,所以在物流协程内加入:

	close(chanShop)	fmt.Println("商品转运完毕!商店已关张!")

然后继续把消费者的for循环替换成

for product := range chanShop{		//product := <-chanShop		fmt.Println("消费了产品",product)		fmt.Println()	}	fmt.Println("消费全部完毕!")

就能够只读取管道里面的商品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35097.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

反射动态修改注解属性值

注解Two中有two属性表&#xff0c;在TestTwoAnno这个类初始化结束后&#xff0c;修改Two注解的two属性。 import com.enterprise.support.rocketmq.annotation.Two; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Compo…...

(Java)获取视频中的每一帧图像

代码 /*** 根据读取到的视频文件&#xff0c;获取视频中的每一帧图片* param video 视频文件* http://192.168.0.107:9087/datago/detectsysfiles/204/createFile/frameFile/001/frameFile001.mp4* param picPath 图片的保存路径* E:/detectsysfiles/204/createFil…...

Java工作资料!同花顺java开发怎么样

前言 昨天&#xff0c;有个女孩子问我提高数据库查询性能有什么立竿见影的好方法&#xff1f; 这简直是一道送分题&#xff0c;我自豪且略带鄙夷的说&#xff0c;当然是加「索引」了。 她又不紧不慢的问&#xff0c;索引为什么就能提高查询性能。 这还用问&#xff0c;索引…...

js/python 抓取网页数据,导出execl

文章目录前言操作代码前言 js的方式&#xff1a;直接使用post获取所有的数据&#xff0c;因为是分页数据有total显示所有的数据&#xff0c;在请求的时候&#xff0c;就可以直接把每页的数据显示为total的值。没有太大的技术含量 python方式&#xff1a;直接遍历页码获取数据&…...

SpringCloud Alibaba实战(7:nacos注册中心管理微服务)

源码地址&#xff1a;https://gitee.com/fighter3/eshop-project.git 持续更新中…… 在上一节我们已经完成了Nacos Server的本地部署&#xff0c;这一节我们学习如何将Nacos作为注册中心&#xff0c;管理微服务。 1、注册中心简介 1.1、什么是注册中心 在微服务的体系里&am…...

xboot大神的libonnx环境搭建

1.get代码 git clone gitgitee.com:xboot/libonnx.git 2.安装依赖&#xff1a; sudo apt-get install libsdl2-dev sudo apt-get install libsdl2-gfx-dev 3.编译 4.结果 5.验证 进入examples/mnist&#xff0c;执行mnist. 结束&#xff01;...

Visual Studio

Visual Studio 2019 Enterprise&#xff08;企业版&#xff09;&#xff1a;BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 Professional&#xff08;专业版&#xff09;&#xff1a;NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y...

数据结构与算法常用总结

数据结构1.常用数据结构及其原理1.1 数组1.2 链表1.3 队列1.4 栈1.5 哈希表1.6 二叉树2.常见数据结构面试题2.1数组和链表的区别2.2 排序算法2.3 栈结构与队列的区别1.常用数据结构及其原理 1.1 数组 每一个数组元素的位置由数字编号&#xff0c;称为下标或者索引(index)。大根…...

Linux中文件的分类

在Linux中&#xff0c;一切皆文件&#xff0c;Linux系统中文件的分类如下&#xff1a; 1、文本文件。文件组成主要是ASCII字符&#xff0c;文件作用是记录普通文件&#xff0c;如shell脚本文件、源文件、TXT文件等。 2、二进制文件。文件由二进制0、1组成&#xff0c;文件作用是…...

你花了多久弄明白架构设计?多个java应用同时访问数据库

01 分布式限流&#xff1a;NginxZooKeeper 1.1 分布式限流之Nginx 请解释一下什么是 Nginx? 请列举 x Nginx 的一些特性。 请列举 x Nginx 和 和 Apache 之间的不同点 请解释 x Nginx 如何处理 P HTTP 请求。 在 x Nginx 中&#xff0c;如何使用未定义的服务器名称来阻止…...

5852. 最小化目标值与所选元素的差 记忆化dfs,关键在于你怎么定义变量

目录解题思路代码解题思路 当时是个周赛题&#xff0c;试图利用爆搜解决的。。。。 显然不行&#xff0c;然后又听有人说是个背包QAQ dl都欺负我(╥╯^╰╥)嘤嘤嘤 不过了解了二维数组第一维放行数第二维放和&#xff0c;&#xff0c;&#xff0c;瞬间感觉记忆化搜索又可以…...

Spring面试题复习(一)

Spring面试题复习&#xff08;一&#xff09; 一、Spring是什么&#xff1f; Spring是一个轻量级的开发框架&#xff0c;常说的Spring框架&#xff0c;就是指Spring Framework&#xff0c;它是很多模块的集合&#xff0c;这些模块可以帮助我们开发人员简化开发&#xff0c;这…...

_____

sel,1SELECT * FROM table sel,2SELECT * FROM table WHERE name 强哥 sel,3SELECT * FROM table ORDER BY updateTime DESC hui,1会 paiban,1排班 beifen,1备份 gaihao,1改好 dai,1待 tu,1图 dangran,1当然 minxian,1明显 mingxian,1明显 suji,1苏稽 shizhan,1适展 gaihaole…...

Python函数参数(必选、默认、可变、关键字)

Python函数参数&#xff08;必选、默认、可变、关键字&#xff09; 【参考】&#xff1a;https://blog.csdn.net/pql925/article/details/80999086 1. 必选参数 必选参数&#xff0c;即使用普通变量标识符标识形参&#xff0c;没有默认赋值或*星号。 def power2(x):return x*…...

Android常见控件

设置进度条&#xff0c;加载 设置通知 权重分配的是剩余的空间...

第三次作业

第五章 一、会话技术概括 存储客户端的状态 由一个问题引出今天的内容&#xff0c;例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的&#xff0c;也就是说每个客户访问服务器端资源时&#xff0c;服务器并不知道该客户端是谁&#xff0c;所以需要…...

PHP进阶面试题

比较一下php和go的区别&#xff1f; Go是一种静态类型语言。PHP是一种动态类型语言。 PHP 每个请求进来时都会创建 fpm-worker 进程&#xff0c;从而导致系统并发高时 CPU 会产生频繁创建进程的开销&#xff0c;而 Go 不会。 golang 是先编译&#xff0c;后执行。由于编译方面…...

目标检测评价指标(一文看懂)

目标检测评价指标之——Precision&#xff0c;Recall&#xff0c;IOU&#xff0c;AP&#xff0c;mAP 看了一些介绍目标检测评价指标的文章&#xff0c;在此做一个小总结&#xff0c;供大家参考。 文章目录目标检测评价指标之——Precision&#xff0c;Recall&#xff0c;IOU&a…...

联系我们

谢谢您对腾达会计的关注如果您有任何问题或意见请通过以下方式和我们联络冠美会计地址 北京市丰台区总部基地汉威国际广场一区625-626室联系方式 免费服务热线:座机: 400-616-1111111-562xxxxx在线咨询 免费拨打...

Mybatis的执行流程

Resource获取全局配置文件实例化SqlsessionFactoryBuilder解析配置文件流XMLCondigBuilderConfigration所有的配置信息SqlSessionFactory实例化trasactional事务管理创建executor执行器创建SqlSession实现CRUD查看是否执行成功提交事务关闭...

[论文阅读]《Database Maanagement Systems》-第九章

第九章 TREE-STRUCTURED INDEXING 树结构索引 &#xff08;P271-301&#xff09; gracefully 优雅的 适当的 because it adjusts well to changes 因为它能很好地适应变化 page boundaries 页面边界 preferable [[ˈprefrəbl]] 更好的 direct [[dəˈrekt; daɪˈrekt]] 管…...

程序员的自我修养——(2)编译与链接

catalog构建预编译编译汇编链接构建 构建build 是 ide里的词&#xff0c;构建 编译 链接。 一个gcc 1.c&#xff0c;其实是&#xff1a; 预处理 编译 汇编 链接 预编译 源文件&#xff0c;被预编译器cpp 编译成&#xff1a; .i文件。 gcc -E 1.c -o 1.i 展开所有的#d…...

Ubuntu 20.04下PyCharm配置QtDesigner,PyUIC和Pyrcc

《ubuntu安装配置QtDesigner》...

OpenLayers源码解析8 ol/source/TileWMS.js

ol/source/TileWMS.js父类 ol/source/TileImage-TileImage 主要功能 WMS服务提供的底图图层源。 参数&#xff1a;TileWMS({}) 参数类型说明paramsObject.<string, *>至少需要LAYER参数。STYLE默认是’VERSION默认是‘1.3.0’WIDTH&#xff0c;HEIGHT&#xff0c;BB…...

Python IDE 详细攻略,拿去吧你~

本文介绍了多个 Python IDE&#xff0c;并评价其优缺点 读者可以参考此文列举的 Python IDE 列表&#xff0c;选择适合自己的编辑器 写 Python 代码最好的方式莫过于使用集成开发环境&#xff08;IDE&#xff09;了。它们不仅能使你的工作更加简单、更具逻辑性&#xff0c;还…...

元力参堂:《披荆斩棘的哥哥》一经上线,能否带动芒果TV会员数增长

随着芒果TV《披荆斩棘的哥哥》大热&#xff0c;播放量就占据了综艺热度榜榜首。芒果超媒发布了2021年半年报&#xff0c;公司2021年1-6月实现营业收入78.53亿元&#xff0c;同比增长36.02%。从财报来看&#xff0c;芒果超媒营收的增长&#xff0c;主要还是来源于其主要业务芒果…...

事件循环机制(Event Loop)刨根问底

事件循环是什么&#xff1f; 为什么有事件循环机制 因为js是单线程的&#xff0c;注意&#xff0c;浏览器是多线程的。浏览器只给一个线程给js渲染&#xff0c; 假设是多线程&#xff0c;可能会存在这种情况&#xff1a; 若一个线程要操作dom,另一个线程要删除dom&#xff0c;就…...

反射动态修改注解属性值

注解Two中有two属性表&#xff0c;在TestTwoAnno这个类初始化结束后&#xff0c;修改Two注解的two属性。 import com.enterprise.support.rocketmq.annotation.Two; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Compo…...

SpringBoot - MyBatis-Plus使用详解(一)

1&#xff0c;什么是 MyBatis-Plus&#xff1f; &#xff08;1&#xff09;MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。我们可以理解为它已经封装好了一些…...

机器学习----支撑向量机(SVM)

SVM 支持向量机&#xff08;Support Vector Machine, SVM&#xff09; 图中是一个样本空间&#xff0c;里面有一些样本点&#xff0c;分成红色和蓝色两类。 逻辑回归是要找到一根决策边界&#xff0c;由决策边界把数据分成两类。但可能存在这样一些数据&#xff08;下图&…...

从苏宁电器到卡巴斯基第13篇:我在苏宁电器当营业员 IV

卖iPhone首先是需要接受培训的 像iPhone这样的重点产品,并不是只要选好了人(营业员),说卖就能卖的,在正式销售之前需要接受厂家的培训。如果说人事关系或者产品源隶属于苹果,那么是由苹果中国公司的讲师负责培训的。比如我们苹果专区的电脑以及播放器,尽管也是从经销商拿…...

hgdb数据编辑

瀚高数据库 目录 文档用途 详细信息 相关文档 数据编辑&#xff08;Data Redaction&#xff09;功能是一种动态数据脱敏机制&#xff0c;针对数据查询时的敏感数据进行动态的安全保护&#xff0c;通过设置策略对表的字段进行动态查询时动态修订。 详细信息 介绍 数据编辑&a…...

从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I

目录 聊聊行业薪酬 我的待遇 聊聊行业薪酬 我相信不论是谁,如果是入职一家新的公司,那么他最想知道的一件事情就是待遇情况了。这里既包含每月实际能到手多少钱,又包括五险一金是否齐全以及是按照高标准还是低标准缴纳。另外,如果是入职IT公司,还会在意年终奖有多少,毕…...

实测Windows Mobile下卡巴斯基手机安全软件表现

实测Windows Mobile下卡巴斯基手机安全软件表现 文/ 图 鲜橙加冰&#xff08;王文文&#xff09;【51CTO.com 独家特稿】随着科技的不断发展和3G技术的不断成熟&#xff0c;我国正迅速进入一个全新的3G时代。大量的智能手机在市场上热卖&#xff0c;新的手机安全问题终于开始引…...

我能入职世界顶尖的卡巴斯基,却被国内安全公司拒之门外 | 程序员有话说

作者 | 姜晔责编 | 伍杏玲【程序人生编者 按】之前作者根据自己的真实经历写成一部小说《从苏宁电器到卡巴斯基》&#xff0c;讲他如何从一个苹果柜台的手机销售&#xff0c;转变成病毒分析师的故事。可由于家庭的原因&#xff0c;他不得不离开北京&#xff0c;回到珠海的家人身…...

学生HTML个人网页作业作品 (服装商城HTML+CSS)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&a…...

Galgame研发日志:美术工作实乃重中之重

Hi&#xff0c;大家好&#xff0c;抱着相当愉快的心情&#xff0c;写下了这篇开发日志。本篇开发日志的核心将以美术工作展开。首先先展示一下主视觉图。 如在座的有精神罗马公民或月球厨师的话&#xff0c;那么已经可以三呼万岁&#xff0c;赞美CG画师WU先生了。——经过了2…...

六十星系之06天同巨门坐丑未

06天同巨门坐丑未 天同巨门在丑未二宫同度。巨门为是非口舌之星&#xff0c;故天同与之同度&#xff0c;其优点便不能发挥&#xff0c;只宜从事以口才为主的工作&#xff0c;女命则可教授化装、发型、插花、烹饪&#xff0c;即以口舌传授一种享受的学问。若从事行业性质不同…...

蒋勋:衣食住行中的美

蒋勋:衣食住行中的美 2010年07月15日[b]蒋勋&#xff0c;1948年生于西安&#xff0c;长于台湾&#xff0c;毕业于中国文化大学历史学系和艺术研究所。1972年赴法留学。曾任《雄狮美术》主编&#xff0c;文化大学、辅仁大学、东海大学美术系主任等。全才型艺术家&#xff0c;在…...

现场品管工作

现场品管工作 2010年10月16日[b]一、企业负责人&#xff08;老板或管理者代表&#xff09;和质量负责人[/b]信任&#xff08;双方&#xff09;――授权&#xff08;领导&#xff09;――能力&#xff08;质量负责人&#xff09;――执行力&#xff08;领导、团队&#xff09;―…...

《人件》 精华版 为软件企业指明成功之路 为开发人员伸张权益

转载于&#xff1a;http://blog.csdn.net/xabcdjon/article/details/6853758 《人件》-- &#xff08;美&#xff09;汤姆.迪马克 蒂姆.李斯特 著 建议初学者阅读“编程规则”&#xff0c;资深者阅读“软件之道” 《人件》是美国两位资深的开发经理和项目管理咨询大师的鼎力之…...

第二章

第二章1 “美”不是一成不变的|解读经典 各位朋友们&#xff0c;今天我们来聊《道德经》的这句话&#xff0c;叫“天下皆之美之为美&#xff0c;恶已&#xff1b;皆知善&#xff0c;此不善矣”&#xff0c;这句话&#xff0c;是老子接前面的“名可名也&#xff0c;非恒名也”&a…...

《面膜行业网络关注度分析报告》

蜜度大数据研究院推出《面膜行业网络关注度分析报告》&#xff0c;以2020年9月1日至11月30日为分析时段&#xff0c;在传播大数据视角下对面膜行业市场规模及现状、相关政策法规、热门面膜品牌及单品、潜在消费者画像、品牌营销活动等方面进行分析。 近些年随着“颜值经济”的不…...

破译快速成长中的艺星,备受市场青睐的密码

作为国内高端连锁医美品牌代表之一&#xff0c;Yestar 艺星迎来了品牌发展的第 15 年&#xff0c;自 2005 年创立至今&#xff0c;艺星以不同寻常的速度&#xff0c;在中国顺利完成 19 城 23 院的连锁布局&#xff0c;备受行业瞩目、星粉青睐。 是什么让艺星在竞争激烈的中国医…...

食怎么吃才算有文化

谈到餐饮的发展&#xff0c;人们言必称要加强餐饮的文化内涵。殊不知文化不是包装&#xff0c;不能策划&#xff0c;如同一个民族&#xff0c;一个企业&#xff0c;要称得上有文化&#xff0c;没有长时间的浸淫&#xff0c;未形成自己的“风俗”和“礼仪”&#xff0c;未产生认…...

AI公开课:19.03.13沈徽-商汤副总裁《AI创新与落地》课堂笔记以及个人感悟

AI公开课&#xff1a;19.03.13沈徽-商汤副总裁《AI创新与落地》课堂笔记以及个人感悟 导读&#xff1a;重要的不是学历而是能力&#xff0c;AI领域人才&#xff0c;硕士学位&#xff0c;不是优势也不是劣势&#xff0c;要更多的去考虑自己的能力。坚持初心&#xff0c;坚持原创…...

lftp传输文件到指定服务器上

需求说明 服务器 192.168.10.11 系统是 ubuntu 22.x 这台服务器需要把本地备份文件自动同步到 192.168.10.12 这台服务器上 服务器 192.168.10.12 系统是windows系统 已知 装有 ftp server&#xff0c;分配的用户名和密码是 ftpuser和123456 服务器 192.168.10.11 先装 lft…...

你一定可以读懂的Linux中的变量、数组、和算数运算与测试看这篇就足够了

Linux中的变量、数组、和算数运算与测试一文详解变量自定义变量变量的使用范围环境变量位置变量数组算术运算与测试前言 Hello&#xff0c;各位码友&#xff0c;大家早上好啊&#xff0c;感谢点开这篇文章。首先在这里祝大家五一假期快乐。不知道这个假期你是怎么安排的呢&…...

基于SSM的考试项目管理系统

一、基于SSM的考试实践项目管理系统 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本实践项目管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…...

专升本考试计算机知识小抄,考试带小抄也是一门技术活

2014年12月30日下午&#xff0c;直播郑州365发微博&#xff1a;郑州铁路职业技术学院进行考试改革&#xff0c;可以让学生带一张A4纸&#xff0c;取名曰“一纸抄”。记者联系郑州铁路职业技术学院&#xff0c;该校宣传部表示&#xff0c;此事属实&#xff0c;确是该校一项考试制…...