select

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

钧一十一

2021-09-07

select中的所有case是同时判断的嘛,还是说有一个触发了,下面的就都不判断了

写回答

1回答

ccmouse

2021-09-11

准确的说是随机。随机选择一个可以进行收发的分支。

在这之前,首先它会全部计算判断条件,也就是所有的case这一行。这个是说比如:

//img.mukewang.com/szimg/613c1f8d09a89beb11120374.jpg

那即使done里面此时可以接收数据,它也会把time.After先进行计算(并不因为它写在前面),time.After返回一个channel,计算的结果是获得一个channel。所以它同时等待time.After返回的channel,以及done channel。

再往后,假设他们同时获得数据,它会随机挑选一个分支进行执行。

1
1
慕数据24389432
那么是不是说这里的done 进行中断,不是精准中断,或者说 做不到精准中断?
2021-10-21
共1条回复

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

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

5995 学习 · 1909 问题

查看课程