最新回答 / 慕虎4228555
这是因为ch<- 1 这个操作,是阻塞操作,就是说 遇到了 a<-1 代码就不走了,什么时候代码往下走?必须等到ch里面的消息被读出去才会继续走可以简单改为:
ch := make(chan int) // fmt.Println(ch) go func() { ch <- 1 }() // 输出channel go func() { fmt.Println(<-ch) }() time.Sleep(time.Second*2)
2021-08-07
讲师回答 / 凰凰
小伙伴客气啦!其实流水线形式也是可以的,这里只是提供了一种可能的案例在提问中提到的流水线形式,可能会存在一种,由于频繁使用channel传输数据的形式,而造成一定程度的额外耗时所以我们在设计并发代码的时候,在某些为了通过并发加速计算的场景下,通常会尽可能地避免使用到channel
2020-11-07