channel是什么意思(简介channel常见用法)( 二 )
生产者往队列当中传输数据,消费者进行消费,唯一不同的是这个队列的容量是1,必须要生产和消费端都准备就绪了才会进行数据传输 。
chan的缓冲
前文说了,chan的容量只有1,只有消费端和生产端都就绪的时候才可以传输数据 。我们也可以给chan加上缓冲,如果消费端来不及把所有的数据都消费完,允许生产端先把数据暂时存在chan当中,先不发生阻塞,只有在chan满了之后才会阻塞 。
用法也很简单,我们在通过make创建chan的时候多加上一个参数表示容量即可,和我们之前创建切片的道理很类似 。
Ch := make(chan int, 100)
比如这样,我们就创建了一个缓冲区为100的信道 。
但多说一句,其实这种情况不太常用,原因也很简单 。因为上下游的消费情况是统一的,如果生产者生产的速度过快,而消费端跟不上的话,即使把它先暂存在缓冲区当中也没什么用,早晚还是会要阻塞的 。
close
当我们对信道使用结束之后,可以通过close语句将它关闭 。
Close这个操作只能在生产端进行,消费端如果close信道会引发一个panic 。我们在从chan接收数据的时候,可以加上一个参数判断信道是否关闭 。
v, ok := <- chif !ok { return}
这样我们就可以判断chan关闭的时间了 。
- 大家都在刷“张同学”,到底刷的是什么?
- 从放烟花到弹钢琴,疫情防控的“温情”背后是什么
- 动解|元宇宙,几个意思?
- 殷世航和韩安冉的关系怎么样 连麦是什么时候
- 我慢慢的听雪落下的声音是什么歌 《延禧攻略》插曲及片尾曲
- 萌德卡妹宣布分手 萌德卡妹为何分手是什么时候交往的
- 芈月传芈瑶第几集出现 芈瑶最后的结局是什么
- 何炅谢娜是什么关系 何炅的父亲何畏为什么被叫老赖
- 白百何为什么叫京圈太子妃 白百何和文章是什么关系
- 闪光的乐队是什么类型的综艺 闪光的乐队嘉宾阵容有谁
