代码如下:
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 那么请问这个下次收到这个管道里头的值是哪个线程呢?这是我一直想不通的事情。
各位大大别关注代码的质量方面的问题,我发布帖子的时候是直接写的,并没有注意这些细节~~~~
主要目的,是我下面的这些问题~~~~~
=0=烦请各位能理解我问题的大大,回答一下~
#3
更多评论
```
go func(i int, ch chan int){
run(i, ch)
}(i, channel)
```
这样写。
注:你的 channel 都拼写错了……
#1