两个协程用channel来传递数据时,就比如生产者消费者模型,这个channel关闭或者说协程什么时候推出循环

786789256 · · 181 次点击 · 开始浏览    置顶
弄了一个类似生产者消费者模型,两个协程有一个通道A,不停写入数据,B不停读取数据,因为都是for循环的,是在A里面没有数据的时候关闭Chanel、,还是在B中判断没有数据,超时就退出for循环呢? loop: for{ select { case bb,err := <-*addChan: if err == false { break loop } addSlice = append(addSlice,bb) } } 代码类似这样的,但现在出现了协程死锁了,貌似是这里一直在<-*addChan读取数据导致的等待超时,死锁了,但有对err判断啊,这里难道不会退出for循环么?谢谢了
181 次点击  
加入收藏 微博
4 回复  |  直到 2018-06-13 16:28:19
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传