gpt4 book ai didi

go - 写入两个独立的 channel 是否可靠地顺序进行?

转载 作者:IT王子 更新时间:2023-10-29 00:54:52 26 4
gpt4 key购买 nike

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

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

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

chan1 <- "blah"
chan2 <- true

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

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

最佳答案

是的,如果 channel 是无缓冲的,你可以依赖它。查看Go Memory Model .

关于go - 写入两个独立的 channel 是否可靠地顺序进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com