课程
/后端开发
/Go
/Go并发之魂:Goroutine深入浅出【程序人生中的“米其林三星级”并发实战】
ch := make(chan int)
// fmt.Println(ch)
ch <- 1
// 输出channel
go func() {
fmt.Println(<-ch)
}()
2021-08-07
源自:Go并发之魂:Goroutine深入浅出【程序人生中的“米其林三星级”并发实战】 5-3
正在回答
这是因为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)
慕虎4228555
举报
深入浅出Go并发核心:Goroutine,斩获Goroutine面试题。
2 回答无缓存channel为什么在如下场景会失败?
1 回答为什么B函数里面要写两个for循环
1 回答老师您好,请问一下为什么不是流水线形式的?就是A处理完一个element直接通过channel传给B,然后A继续处理其他的element,最后在C处进行收集。这样子不是更能体现并发的好处吗?