美文网首页
Go channel特点篇

Go channel特点篇

作者: 55d3c8249cb7 | 来源:发表于2017-04-19 17:36 被阅读0次

    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 -
    队列写阻塞 写阻塞 成功读取队列中数据 进入关闭状态,成功写入队列的数据可读 -
    队列读阻塞 成功写入数据 读阻塞 进入关闭状态 -
    队列可读写 成功写入数据 成功读取数据 进入关闭状态,成功写入队列的数据可读 -

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

    相关文章

      网友评论

          本文标题:Go channel特点篇

          本文链接:https://www.haomeiwen.com/subject/pkehzttx.html