结果如下:
问题出在这个select里面:
当两个case条件都满足的时候,运行时系统会通过一个伪随机的算法决定哪个case将会被执行,所以当tick.C条件满足的那个循环,有某种概率造成ch<-i没有发送(虽然通道两端没有阻塞,满足发送条件)
解决方案:
1: 再被随机到的tick.C里面多执行一次ch<-i
结果如下:
这样有个问题, 如果有多个case就不通用了,因为每个case下面都要去加一个,显得繁琐
2: 把tick.C的case单独放到一个select里面,并在其后面加入一个default,保证不阻塞
测试结果如下:
上述俩种都是希望得到的结果