waitgroup的一个疑惑点
来源:7-3 函数式编程例二

szuxxy
2021-11-12
func main() {
wg := new(sync.WaitGroup)
wg.Add(2)
go func() {
defer wg.Done()
for i := 0; i < 6; i++ {
println(i)
if i == 3 {
runtime.Gosched()
}
}
}()
go func() {
defer wg.Done()
println("Hello, World!")
}()
wg.Wait()
}
这段执行的结果为什么不是
0
1
2
3
Hello, World!
4
5
而是:
Hello, World!
0
1
2
3
4
5
写回答
1回答
-
ccmouse
2021-11-15
print本身是io操作,也会造成goroutine的切换。这里列出的两个结果在理论上都是有可能的,都是正确的结果。
00
相似问题