select
来源:11-8 并发任务的控制

钧一十一
2021-09-07
select中的所有case是同时判断的嘛,还是说有一个触发了,下面的就都不判断了
写回答
1回答
-
ccmouse
2021-09-11
准确的说是随机。随机选择一个可以进行收发的分支。
在这之前,首先它会全部计算判断条件,也就是所有的case这一行。这个是说比如:
那即使done里面此时可以接收数据,它也会把time.After先进行计算(并不因为它写在前面),time.After返回一个channel,计算的结果是获得一个channel。所以它同时等待time.After返回的channel,以及done channel。
再往后,假设他们同时获得数据,它会随机挑选一个分支进行执行。
112021-10-21
相似问题