Go channel特点篇

channel模式

根据同步方式不同,channel有两种模式:
1、同步模式,形式如下:

ch := make(chan int)

2、队列模式,形式如下:

ch := make(chan int, 10)

根据数据方向流不同,channel类型可以有以下三种模式:

  1. 写操作模式(只发送)
  2. 读操作模式(只接收)
  3. 读写操作模式(不限发送与接收)

channel操作

channel有以下操作:

  1. 创建
  2. 关闭
  3. 写(发送)操作
  4. 读(接收)操作
    这些操作都是原子操作

channel状态

根据模式与操作,channel有以下状态:

  1. 同步写阻塞
  2. 同步读阻塞
  3. 关闭状态
  4. 队列写阻塞
  5. 队列读阻塞
  6. 队列可读写
  7. nil状态

channel状态与操作之间关系

状态/操作 写操作 读操作 关闭 创建
nil状态 写阻塞 写阻塞 产生panic(close of nil channel) -
同步写阻塞 写阻塞 成功读取数据 进入关闭状态,产生panic -
同步读阻塞 成功写入数据 读阻塞 进入关闭状态 -
关闭状态 产生panic 立即返回(nil,false) 产生panic -
队列写阻塞 写阻塞 成功读取队列中数据 进入关闭状态,成功写入队列的数据可读 -
队列读阻塞 成功写入数据 读阻塞 进入关闭状态 -
队列可读写 成功写入数据 成功读取数据 进入关闭状态,成功写入队列的数据可读 -

由于个人水平有限,有什么不足与错误,敬请指正!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 10,784评论 1 15
  • 第三章 Java内存模型 3.1 Java内存模型的基础 通信在共享内存的模型里,通过写-读内存中的公共状态进行隐...
    泽毛阅读 9,856评论 2 21
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,224评论 19 139
  • 一、多线程 说明下线程的状态 java中的线程一共有 5 种状态。 NEW:这种情况指的是,通过 New 关键字创...
    Java旅行者阅读 10,207评论 0 44
  • 青春是用来怀念的,怀念疯狂过的时光。怀念校园时代逝去的一切,都是那么鲜活,怀念那时的我们好像永远有用不完的精力。 ...
    小哧阅读 4,750评论 0 3

友情链接更多精彩内容