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

搭建并行处理管道,感受GO语言魅力

难度中级
时长 2小时17分
学习人数
综合评分9.67
51人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.6 逻辑清晰

最赞回答 / 根号三百万
向channel写入或者读取数据都是阻塞的,不开goroutine的话代码上面的代码就阻塞在 out <- r , 当然就死锁了。开gouroutine的话应该不会吧,你可以贴下代码看看
这可是教你分布式啊
狗语言 霉函数 哈哈哈哈哈

最新回答 / 芭菲雨
换了一个端口号就可以了,就是很奇怪之前的8888端口无法访问的错误界面,只是显示空白页,还是不知道为什么
ccmouse老师的课程是我见过讲解的最透彻的,非常好,简单易动,期待都是更多的课程。
j讲得很棒,谢谢老师

最新回答 / Liu_HongYe
哦,我懂了,在InMemSort中, 数据没有处理完, chan是没有close的, 那么这个chan就会阻塞掉, 一直不会把监听的数据准备好.

最新回答 / Liu_HongYe
for循环执行时需要时间的, 在for循环未执行完成之前, 前面go语句生成的goroutine就已经执行了, 所以会有一部分的输出出现.

最赞回答 / 慕粉329807310
11分45秒的时候老师解释了,createPipeline只是创建了pipeline,也就是把一个文件分成了chunkCount个小快,各放上了一个channel,但是此时channel还是阻塞的,因为要等触发了ReadSource以后才这些通道才会开始不断传输。因此在CreatePipeline里面是不能file.close的,需要把这些file句柄返回出来,由外面close。老师说因为不想把这个示例搞的太复杂,所以就留下了这个坑。

最新回答 / tokumi
defer的效果是从最后向前依次执行需要defer的语句,也就说需要defer操作的引用都会被存储在一个栈空间。在栈空间里file指向的地址还是不同的地址,因此可以解决这个问题。猜测是这样,并没有实际证据。

最赞回答 / haoyun666
只有一个ready,那么第二个在读取的时候会一直被等待呀,等到能读取。如果其中一个读数据不ok,那么证明已经关闭了数据读取完了,这是就拍另一个就行了。所以没有问题。

最新回答 / 慕先生0298200
因为in只进不出,所以加<-限制,不然in就可以进出。同理返回值。不加也可以,加了代码比较严谨。
课程须知
1、了解一门编程语言,对基本算法如排序有了解
老师告诉你能学到什么?
1、go语言的历史和设计初衷 2、go语言的安装与开发环境 3、简单的go语言程序 4、了解go语言并发编程 5、实现一个并行数据处理管道

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消