select阻塞的问题

来源:11-4 用select进行调度

五栋一哥

2020-03-26

老师,channel读写都会阻塞,我把time.sleep去掉后,在go func中给 out < -i 写数据,那么在没有读out前,这个携程应该是阻塞的,不会进行下次操作。但是执行结果却是输出很大的数据,而不是从i=0开始的,为什么不是,i=0时 ,out<-i ,在没有读数据前,应该是阻塞的,而在select中选择执行case后,他才会往后进行循环呢?
图片描述
图片描述
图片描述

写回答

1回答

ccmouse

2020-03-28

还是会从1开始的,但因为它输出太快太多了,运行窗口的缓冲区不够,所以只显示了最新的数据,不然idea就要挂了。

实在要看我们可以go run xxx.go > out.txt

然后打开这个out.txt查看,不过记得运行的时候要及时按ctrl+c,这个out.txt会非常大。

1
1
五栋一哥
好的,谢谢老师!
2020-03-28
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程