-1
package main
import (
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
wg.Add(1)
go func() { //A
wg.Wait()
println("wait exit")
}()
go func() {
time.Sleep(time.Second)
wg.Done()
}()
wg.Wait()
println("main exit")
}
wait exit
main exit
为什么不主的goroutine执行的println(“主退出”)第一,和主线程死,然后丢弃goroutine? 它保持打印结果显示
我已经尝试了很多次,如果这是由机会决定的,我想也许它应该至少出现一次。 –
@JunAn尝试使用-race运行程序。在使用-race编译时,运行时会有点随机化运行goroutines的顺序。使用-race大多数时候我都会得到不同的输出结果。 – nussjustin
@JunAn:订单没有定义,这意味着当前的运行时实现可能仍然会以一致的方式影响订单。如果您使用操场,则每次只检索相同的缓存结果。只要不创建订单就不要依赖订单。 – JimB