采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
那么理论上有没有可能tick会把append数据的操作给干掉啊,这样不就造成数据会跳跃吗,我实际运行了一下,然而并不能,我把tick设成毫秒,发现并不影响数据的插入,还是按照顺序来的
这么做的确没有问题。两个channel同时有数据,的确会随机选取一个,有可能选到tick,这次select操作就结束了。但是,c1里面的数据还在,不会丢。外层for循环会再次让我们运行下一次select,此时就会选择c1里的数据。极端情况下,tick如果特别短(毫秒不短了),理论上会永远select不到c1。但实际上,由于select是随机的,所以也还是会select到
老师,我是这样想的,case <-tick 满足了,同时,case n:=<-c1也满足了,然后n的值打比方是1,但是随机没有执行到后面的value=append(value,n),这时候channel c1的值已经被n接受了,就会运行下面的去接受2。您的意思是如果没被执行到,n就不能接受channe c1传过来的值吗?我逻辑上有点转不过来啊
哦,当然不会这样。随机到tick的话,n不会有值的。值还在channel里面。并不会把这几句case都执行一遍,只会选一句执行
ok,知道了,谢谢老师。
登录后可查看更多问答,登录/注册
语法+分布式爬虫实战 为转型工程师量身打造
3.7k 14
690 1
2.0k 1
1.1k 12