ccmouse老师,我查了下select的case同时满足的情况下会随机选择一个执行

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

慕粉2143548772

2019-01-08

那么理论上有没有可能tick会把append数据的操作给干掉啊,这样不就造成数据会跳跃吗,我实际运行了一下,然而并不能,我把tick设成毫秒,发现并不影响数据的插入,还是按照顺序来的图片描述

写回答

1回答

ccmouse

2019-01-08

这么做的确没有问题。两个channel同时有数据,的确会随机选取一个,有可能选到tick,这次select操作就结束了。但是,c1里面的数据还在,不会丢。外层for循环会再次让我们运行下一次select,此时就会选择c1里的数据。
极端情况下,tick如果特别短(毫秒不短了),理论上会永远select不到c1。但实际上,由于select是随机的,所以也还是会select到

0
3
慕粉2143548772
回复
ccmouse
ok,知道了,谢谢老师。
2019-01-10
共3条回复

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

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

5995 学习 · 1909 问题

查看课程