代码如下:
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 那么请问这个下次收到这个管道里头的值是哪个线程呢?这是我一直想不通的事情。
有疑问加站长微信联系(非本文作者)