一个关于通信这块的问题,求帮助!

19940308cai · · 2528 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

代码如下: func main() { //创建一个无缓冲管道 chanal := make( chan int ) for i := 0 ; i < 20 ; i++ { go run( i , chanal ) } chanal<-1 } func run( name int , ch chan int ) { for{ data := <-ch fmt.Println( data ) } } 问题: 在main函数当中,开了20个线程,并且初始化了给管道塞了一个初始值 ! 请问为什么只有第一个线程能够收到这个管道里头的值呢? 为什么不是第二个线程,第三个.......第N个线程收到这个值呢? 问题追加: 如果我在run后头又加一个 :ch<-2 那么请问这个下次收到这个管道里头的值是哪个线程呢?这是我一直想不通的事情。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2528 次点击  
加入收藏 微博
3 回复  |  直到 2017-06-19 15:15:23
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传