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 个 goroutine 来将 num 插入通道 c,所以我只是想知道,这些 goroutine 会以随机顺序执行吗?在我的测试过程中,输出始终为 1 到 100
不,不能保证它们按顺序运行。和GOMAXPROCS=1
(默认)它们看起来是这样,但是语言规范并不能保证这一点。
当我运行你的程序时GOMAXPROCS=6
,输出是不确定的:
$ GOMAXPROCS=6 ./test
2
0
1
4
3
5
6
7
8
9
...
在另一次运行中,输出略有不同。
如果您希望通道上的一组发送按顺序发生,最好的解决方案是从同一个 goroutine 执行它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)