如果我在两个频道上都有选择:
for {
select {
case <-chan1:
// do something
case <-chan2:
// do something else
}
}
然后在一个单独的goroutine中,我依次写到那些通道:
chan1 <- "blah"
chan2 <- true
我保证在执行“其他操作”之前先执行“执行某些操作”吗?
我知道,如果选择具有两个未阻塞的通道,则它是随机选择的,但是我认为,如果该选择已被阻塞,则写入第一个通道可能会可靠地“中断”写入goroutine,这意味着该选择将在未阻塞的情况下运行第一个通道在第二次写入之前。