登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-11 11:00:35 323浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《向两个独立通道的写入是否可靠地按顺序进行?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

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

for {
    select {
    case <-chan1:
        // do something
    case <-chan2:
        // do something else
    }
}

在一个单独的 goroutine 中,我按顺序写入这些通道:

chan1 <- "blah"
chan2 <- true

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

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


解决方案


是的,如果通道没有缓冲,您可以依赖它。参见Go Memory Model

本篇关于《向两个独立通道的写入是否可靠地按顺序进行?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>