1. 首页
  2. 数据库
  3. 其它
  4. 关于Golang使用channel的死锁问题

关于Golang使用channel的死锁问题

上传者: 2021-01-16 20:33:21上传 PDF文件 52.33KB 热度 26次
发现问题 小白一枚,最近在入门学习Golang,在学到channel时,发现总会遇到死锁的问题: fatal error: all goroutines are asleep – deadlock! 原理解读 通过查找相关资料发现,channel本身是用于不同协程间通信的,一般一个协程作为生产者,另一个作为消费者,遵循下面两个原则: 当上一次生产到channel的数据未被消费时,生产者继续生产将会阻塞 当生产者停止生产时,消费者继续消费将会阻塞 所以,当我们写的程序生产和消费的数量不对等时,便会发生阻塞造成死锁 代码示例 生产者阻塞: 生产4条消息,只消费3条 package main i
用户评论