最新回答 / 天道酬勤ksl
注意 无缓冲区通道, 两端是可以保证原子性的 打印不出来 不是因为通道没来得及输出而是 print 这个函数没来得及刷新 os 缓冲区就被主进程强行关掉了,
2022-02-09
最新回答 / 慕虎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