go channel简单笔记

go的通道用于goroutine之间的通信与数据同步,是go中比较重要的类型之一

nil通道:

未使用make进行初始化的chan默认值为nil,读取/写入nil通道会永久阻塞当前协程,关闭nil通道会panic

无缓冲通道:

使用make初始化通道时未指定数量则为无缓冲通道,必须读写双方同时操作才不会阻塞,有读无写时,读将阻塞,有写无读时,写将阻塞

有缓冲通道:

使用make初始化通道时指定数量则为有缓冲通道,当缓冲区未满时,写入将不会阻塞,否则阻塞;当缓冲区有数据时,读取不会阻塞,否则阻塞

已关闭通道:

使用close(ch)关闭通道后,读取该通道将立即返回该通道类型的零值,写入已关闭的通道将会panic

在使用通道时,应注意操作通道时阻塞造成的协程无法退出问题,从而导致内存泄漏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值