gpt4 book ai didi

go - 在同一个 goroutines 中创建的 goroutines 是否总是按顺序执行?

转载 作者:IT王子 更新时间:2023-10-29 01:16:32 27 4
gpt4 key购买 nike

package main

func main() {
c:=make(chan int)
for i:=0; i<=100;i++ {
i:=i
go func() {
c<-i
}()
}
for {
b:=<-c
println(b)
if b==100 {
break
}
}
}

上面的代码创建了 100 个 goroutines 将 num 插入 channel c,所以我想知道,这些 goroutines 会随机执行吗?在我的测试中,输出总是 1 到 100

最佳答案

不,不能保证它们按顺序运行。使用 GOMAXPROCS=1(默认值)时,它们似乎可以,但语言规范不能保证这一点。

当我用 GOMAXPROCS=6 运行你的程序时,输出是不确定的:

$ GOMAXPROCS=6 ./test
2
0
1
4
3
5
6
7
8
9
...

在另一次运行中,输出略有不同。

如果您希望 channel 上的一组发送按顺序发生,最好的解决方案是从同一个 goroutine 执行它们。

关于go - 在同一个 goroutines 中创建的 goroutines 是否总是按顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29057210/

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