go语言通道插入0_Go语言入门必知教程-通道

Golang提供了一种称为通道的机制,用于在协程之间共享数据。当函数作为协程执行并发活动时,需要它们共享资源或数据,通道便充当协程之间的管道(管道),提供一种确保同步交换数据的机制。

需要在声明通道时指定数据类型,可以共享任何类型的值和指针。数据在通道上传递:在任何给定的时间,只有一个协程可以访问数据项:因此在设计上是不会发生资源竞争的情况。

根据数据交换的行为,有两种类型的通道:无缓冲通道和缓冲通道。无缓冲通道用于在协程之间执行同步通信,而缓冲通道用于执行异步通信。在发送和接收数据瞬间,无缓冲通道保证数据交换是在两个协程之间执行,缓冲通道没有这样的保证。

通道由make函数创建,该函数指定chan关键字和通道的元素类型。

创建无缓冲和有缓冲的通道

8764e751855cb923a2c7ce7953284339.png

内置函数make能够用来创建无缓冲和有缓冲的通道,参数指定chan关键字和的要交换的数据类型

使用操作符

8faaa4e639f9edb8361bedf27fa4b7e3.png

从通道中取出值

5eff43e080803037bd3538c304085560.png

无缓冲通道

无缓冲通道没有指定容量来保存值。因此,在传输任何数据之前,这种类型的通道要求发送和接收数据的协程在同一时刻都要准备就绪。如果两个协程在相同的时刻还未准备好,则通道将使执行数据传输的两个协程阻塞等待对方。同步是在通道上发送和接收数据的基础,发送和接受数据双方一个都不能少。

缓冲通道

缓冲通道有指定的容量来保存值。这种类型的通道,不强制传输数据的协程双方在同一时刻准备好执行发送和接收,通过阻塞协程来协调双方的通信。与无缓冲通道不同,缓冲通道发送或接收的阻塞有不一样的情况:只有在通道中没有要接收的值时,接收方会阻塞;只有在没有可用缓冲区来放置要发送的值时,发送方才会阻塞。

02b94b0e5ea62924117d8394a1742c56.png

每次运行此程序时,输出的结果不同,这是因为程序和Go调度程序的随机性。

在上面的程序中,创建一个字符串类型的缓冲通道,其容量为10。WaitGroup的计数是5,代表5个协程。将10个字符串发送到通道中,以模拟协程所要做的工作。最后一个字符串发送到通道后,通道将关闭,主函数将等待所有项目完成。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aes加密字符串c++_springboot2.2.X手册:防抓包?快速实现API接口数据加密

溪云阁:专注编程教学,架构,JAVA,Python,微服务,机器学习等,欢迎关注上一篇:springboot2.2.X手册:redis的7种类型100个方法全解析有没有遇到这样子的接口,放到…

鸿蒙系统打造完备终端,搭载鸿蒙系统的手机很快推出,华为生态更加完善

2019年的8月9日,在华为开发者大会上华为向大家正式的发布了一款操作系统——鸿蒙系统。这个系统备受大家的关注,鸿蒙2.0的发布也在时刻期待中。因为在目前的操作系统中,华为的鸿蒙操作系统是仅次于安卓、ios的存在,而今日&#xf…

curl socket 访问_使用Curl、socket、file_get_contents三种方法POST提交数据 | 学步园

# <?php # /**# * Socket版本# * 使用方法&#xff1a;# * $post_string "appsocket&versionbeta";# * request_by_socket(facebook.cn,/restServer.php,$post_string);# */# function request_by_socket($remote_server,$remote_path,$post_string,$port …

html 标签 r语言,从R中的字符串中删除html标签

我正在尝试将网页源代码读入R并将其作为字符串处理。我正在尝试删除段落并从段落文本中删除html标签。我遇到了以下问题&#xff1a;我尝试实现一个功能来删除html标签&#xff1a;cleanFunfunction(fullStr){#find location of tags and citationstagLoccbind(str_locate_all(…

python给图片加半透明水印_Python 批量加水印就这么简单!

工作的时候&#xff0c;尤其是自媒体&#xff0c;我们必备水印添加工具以保护我们的知识产权,网上有许多的在线/下载的水印添加工具&#xff0c;但他们或多或少都存在以下问题&#xff1a; 在线工具需要将图片上传到对方服务器&#xff0c;信息不安全。 很多工具不具备批量处理…

html 选中状态,html默认选中状态

html中标签用法解析及如何设置selec标签定义和用法 select 元素可创建单选或多选菜单。当提交表单时&#xff0c;浏览器会提交选定的项目&#xff0c;或者收集用逗号分隔的多个选项&#xff0c;将其合成一个单独的参数列表&#xff0c;并且在将 表单数据提交给服务器时包括 nam…

nemesis什么车_nemesis是什么意思_nemesis的翻译_音标_读音_用法_例句_爱词霸在线词典...

全部报应Was he aiming at Bryant, his old nemesis and a favorite target in the past?他是不是暗指科比, 一直的“竞争对手”和过去最中意的目标?期刊摘选After the defeat of their old arch nemesis, the Turtle have grown apart as a family.在击败旧时强敌后, 忍者神…

wxpython制作表格界面_[Python] wxPython 菜单栏控件学习总结(原创)

1、总结 1、大体创建过程 1、创建一个 菜单栏 : menuBar wx.MenuBar()相当于这个白色地方&#xff0c;没有File这个菜单 2、创建 菜单 : fileMenu wx.Menu()这两个不是直接“用的”&#xff0c;叫菜单。既用来分类其他 菜单项 的文件夹样 3、创建 菜单项 : newItem wx.MenuI…

android 8三星note8,信息太多很烦琐?告诉你三星Note8有妙招

不知从何时开始&#xff0c;我们眼前的信息变得丰富而繁杂。简洁的新闻无需经过报纸过滤&#xff0c;发生数分钟已经城皆知。预测晴雨也无需依靠天气先生&#xff0c;点亮手机即可洞悉风雨。生活在信息时代的我们仅用几英寸的窗口观察世界&#xff0c;信息的洪流难免会遮蔽眼前…

realloc函_realloc(重新分配内存空间的函数)

在头文件中定义void * realloc(void * ptr&#xff0c;size_t new_size);重新分配给定的内存区域。它必须预先分配malloc()&#xff0c;calloc()或realloc()尚未释放与free或呼叫realloc。否则&#xff0c;结果是不确定的。重新分配由以下两者之一完成&#xff1a;a)ptr如有可能…

python做excel表格教程视频_基于Python实现excel表格读写

首先安装对应的xlrd和xlwt 打开cmd命令窗口输入pip install xlrd和pip install xlwt就可以安装。之后输入pip list检查是否成功配置&#xff1a;xlrd操作# 接下来就是常用的语法操作&#xff1a; excel_data xlrd.open_workbook(文件路径)#得到对应的工作表 sheet excel_data…

虚无鸿蒙哪个厉害,【图说鸿蒙】鸿蒙设定之七柱神(五)

原标题&#xff1a;【图说鸿蒙】鸿蒙设定之七柱神(五)七柱神玄冥神飞来流去本无心&#xff0c;无空无我混天尘。幻作人形深简出&#xff0c;不是老妪是海神。玄冥神 虚无荒海司掌海洋、流动之力 神威之色为蓝执掌海洋、流动之力的神&#xff0c;是神道“熵”的最高掌控者&#…

java lambda 排序_Java8特性:Lambda表达式之概念篇

Java自诞生已经有十几个年头了&#xff0c;目前也已经发布了第十三个大版本&#xff0c;其中Java8是常用的版本中最新的一个版本。而Java8最大的特性就是&#xff1a;Lambda表达式、函数式接口和Stream流。本篇我只介绍Lamda表达式的概念以及简单使用&#xff0c;至于别的我打算…

jq获取表格里的checkbox_Python抓取网页表格(一)

Python有很多包可以抓取数据&#xff0c;如selenium、requests、scrapy、pandas&#xff0c;每个包都有其适用性&#xff0c;个人认为在抓取数据时&#xff0c;代码简洁性和数据获取的准确性是需要考虑的因素&#xff0c;时间快慢倒不用太在意&#xff0c;毕竟用python抓数据本…

html一个空格多少像素,一个空格占几个字符?

一个空格通常占2个字符&#xff0c;但有些特殊情况占用3个字符。在程序中&#xff0c;空格占用的字符数取决于程序使用的字符集&#xff0c;如&#xff1a;1、使用多字节字符集时&#xff0c;半角空格占用1个字节&#xff0c;全角空格占用2个字节。2、使用Unicode字符集时&…

各种抠图动态图片_不用手。自动、智能抠图,图片去背景

BgEraser 是一款基于 AI 的自动、智能图片去背景工具&#xff0c;无需勾选可用、可删除区域&#xff0c;上传图片&#xff0c;立即下载即扣图完成的图片。AppinnBgEraser 真是懒人的福音。在此之前&#xff0c;比如很好用的在线去背景服务 remove.bg&#xff0c;是需要用户手动…

html用dom显示xml,html DOM文件引用一个XML文件将不会在浏览器中打印

我完全不熟悉这一点&#xff0c;我正在上课&#xff0c;现在变成了一个令人头疼的问题。我有这个HTML DOM文件&#xff0c;它引用了一个XML文件&#xff0c;我需要在浏览器中显示在屏幕上。它应该只打印标题&#xff0c;标题&#xff0c;第一个&#xff0c;最后一个&#xff0c…

bigdecimal 保留两位小数_Python的保留小数及对齐

Python的保留小数&#xff1a;方法1&#xff1a;用round函数(有坑)。median 12.3004886print(round(median, 2)) # 保留两位小数print(round(median, 3)) # 保留三位小数print(round(median, 4)) # 保留四位小数运行结果&#xff1a;12.312.312.3005可以看出Python中的r…

分布式光伏补贴_四川:2020年起工商业分布式光伏已无补贴

来源&#xff1a;四川省发改委日前&#xff0c;四川省发改委发布《四川省分布式光伏建设管理相关政策》&#xff0c;对该省分布式光伏发电项目定义、分类、备案程序、需要国补的项目相关政策进行了梳理。值得注意的是&#xff0c;文件明确&#xff0c;自2020年起&#xff0c;四…

用计算机玩游戏最简单的方法,如何制作电脑简易命令小游戏

满意答案sylvia10172019.01.20采纳率&#xff1a;48% 等级&#xff1a;7已帮助&#xff1a;460人简单的Dos小游戏开始学习java&#xff0c;这周只简单的学习了C的基本语法&#xff1a;输入输出&#xff0c;判断循环&#xff0c;因此用这些东西在java上瞎写了一个DOS小游戏。…