Go channel有什么特点?

本文阅读 2 分钟
首页 golang 正文

channel有2种类型:无缓冲、有缓冲

channel有3种模式:写操作模式(单向通道)、读操作模式(单向通道)、读写操作模式(双向通道)

     写操作模式      读操作模式      读写操作模式  
创建make(chan<- int)make(<-chan int)make(chan int)

channel有3种状态:未初始化、正常、关闭

     未初始化        关闭                              正常            
关闭panic           panic                             正常关闭        
发送永远阻塞导致死锁panic                             阻塞或者成功发送
接收永远阻塞导致死锁缓冲区为空则为零值, 否则可以继续读阻塞或者成功接收

注意点

  1. 一个 channel不能多次关闭,会导致painc
  2. 如果多个 goroutine 都监听同一个 channel,那么 channel 上的数据都可能随机被某一个 goroutine 取走进行消费
  3. 如果多个 goroutine 监听同一个 channel,如果这个 channel 被关闭,则所有 goroutine 都能收到退出信号
本文来自投稿,不代表本站立场,如若转载,请注明出处:
如何限制 goroutine 并发数量 (channel 或 WaitGroup)
« 上一篇 09-17
分片键的选择?
下一篇 » 09-17

发表评论

发表评论