写入两个独立的通道是否可靠地顺序进行?

如果我在两个频道上进行选择:


for {

    select {

    case <-chan1:

        // do something

    case <-chan2:

        // do something else

    }

}

在一个单独的 goroutine 中,我依次写入这些通道:


chan1 <- "blah"

chan2 <- true

我能保证在“做其他事情”之前看到“做某事”吗?


我知道如果 select 有两个未阻塞的通道,它会随机选择,但我认为如果 select 已经阻塞,写入第一个通道可能会可靠地“中断”写入 goroutine,这意味着 select 将在之前未阻塞的第一个通道上运行第二次写。


侃侃尔雅
浏览 111回答 1
1回答

浮云间

是的,如果通道是无缓冲的,你可以依赖它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go