首页 > 作文

Go语言中的通道channel详情

更新时间:2023-04-05 22:04:11 阅读: 评论:0

一、go语言通道基础概念

1.channel产生背景

线程之间进行通信的时候,会因为资源的争夺而产生竟态问题,为了保证数据交换的正确性,必须使用互斥量给内存进行加锁,go编导艺考培训语言并发的模型是csp,提倡通过通信共享内存,而不是通过共享内存而实现通信,通道恰巧满足这种需求。

2.channel工作方式

channel类似与一个队列,满足先进先出的规则,严格保证收发数据的顺序,每一个通道只能通过固定类型的数据如果通道进行大型结构体、字符串的传输,可以将对应的指针传进去,尽量的节省空间

二、通道使用语法

1.通道的声明与初始化

2.将数据放入通道内

取出数据使用操作符 <-操作符右是输入变量,操作符左是通道代表数据流入通道内

代码如下:

3.从通道内取出数据

取出数据也使用操作符 <-操作符右是通道,操作符左是接受变量

代码如下:

4.关闭通道clo

如果通道重复tgp助手关闭或者关闭一个没有初始化的通道就会抛出错误

在并发函数中一次关闭通道代码如下:

三、单项通道及通道的状态分析

1.单项输出通道

2.单项输入通道

示例函数:

3.通道的状态

channelnil未初始化空通道满通道非空接收阻塞阻塞接收值接收值发送阻塞发送值阻塞发送值关闭panic关闭成功关闭成功关闭成功关闭后返回的数据panic返回0值数据读完后返回零值数据读完返回零值

四、通道死锁祖国在我心中演讲稿300字原因分析

注意以下情况:

在使用通道的时候,从以上表格可知有时会进入阻塞状态,结合waitgroup,如果在主函数等待使用通道的函数执行结束,而使用通道的函数并且通道陷入阻塞状态,如果有其他函数对其进行唤醒则不会死锁,如果没有其他函数可以对其进行唤醒则会抛出死锁异常。

总结:
通道将数据隔离在每一份通道内,在并发的身份证要求情况下可以很好的使用数据,当然要熟悉通道阻塞的几种情况,避免死锁异常。

到此这篇金斯伯格钢琴关于go语言中的通道channel详情的文章就介绍到这了,更多相关go语言中的通道channel内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-05 22:04:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f12e2c6647ebc3c499625a4f68dcede9.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Go语言中的通道channel详情.doc

本文 PDF 下载地址:Go语言中的通道channel详情.pdf

标签:通道   死锁   数据   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图