为了账号安全,请及时绑定邮箱和手机立即绑定

Go并发之魂:Goroutine深入浅出【程序人生中的“米其林三星级”并发实战】

凰凰 架构师
难度初级
时长 1小时58分
学习人数
综合评分8.33
8人评价 查看评价
8.5 内容实用
8.5 简洁易懂
8.0 逻辑清晰

最新回答 / 慕虎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)

最新回答 / 慕梦前来
你用你的想法用代码来试一下比对一下吧

讲师回答 / 凰凰
小伙伴客气啦!其实流水线形式也是可以的,这里只是提供了一种可能的案例在提问中提到的流水线形式,可能会存在一种,由于频繁使用channel传输数据的形式,而造成一定程度的额外耗时所以我们在设计并发代码的时候,在某些为了通过并发加速计算的场景下,通常会尽可能地避免使用到channel

讲师回答 / 凰凰
?抱歉,没理解你的意思,能否给点提示?
课程须知
1、学前掌握基本的Go语法基础
老师告诉你能学到什么?
1. multi-goroutine核心机理、使用场景、局限性、如何管理 2. 协程生命周期、多并发通用设计+实战 3. channel使用、资源争抢 4. channel阻塞:概念+触发条件+实际开发场景+避免方法 5. goroutine高频面试题+面试思路点拨 6. 如何白板写goroutine并发面试代码与注意事项

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消