-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