关于select
来源:6-4 Select
寻曜
2021-05-17 17:55:35
老师,关于select有个小问题
这里我在select里面加了default 为什么运行这个代码就不会执行到c1 c2里面呢 照理说 我上面也会写数据到channel呀
3回答
c1, c2有数据,但是因为default是不阻塞的,所以命中次数实在太多了,你没有找到相应的输出。
两种方法,一个是default里面不要print,另一种是采用输出重定向,go run select.go>out.txt,然后打开out.txt查找。(警告:out.txt会非常非常大)
weixin_慕用2290475
2022-02-24
select多路复用,开启goroutine并发处理,default因为不被阻塞,速度非常快,人的肉眼是有限的,机器处理速度每秒几千几万几十万,你看不到case的数据,要么你把default去掉,要么你在加上time.sleep超时等待,要么你导出到文件,查找你的数据
慕侠2582827
2022-02-19
你可以在select所在的for循环里的最后加一句time.Sleep(time.Millisecond)这样就能看到c1和c2接收到的数据了
相似问题