在 Go 操场上没有得到预期的结果
Did not get expected result in Go playground
我有一个非常简单的代码如下:
var wg sync.WaitGroup
func main() {
for i := 0; i < 100; i++ {
wg.Add(1)
go func(i int) {
fmt.Printf("No %d goroutine begin\n", i)
fmt.Printf("No %d goroutine is done\n", i)
wg.Done()
}(i)
}
wg.Wait()
}
在我的本地计算机上,12 核 CPU,此代码将按预期随机输出。
但是当我运行 go playground environment 中的代码时,我得到了意想不到的结果。我知道 Go playground 只使用一个核心来 运行 代码,所以预期的输出应该是一个一个从 No 0 goroutine begin,但它总是从最后一个开始number 第 9 个 goroutine begin。这是正确的还是我遗漏了什么?
Go playground 具有经过修改的调度程序和其他特殊功能。
我有一个非常简单的代码如下:
var wg sync.WaitGroup
func main() {
for i := 0; i < 100; i++ {
wg.Add(1)
go func(i int) {
fmt.Printf("No %d goroutine begin\n", i)
fmt.Printf("No %d goroutine is done\n", i)
wg.Done()
}(i)
}
wg.Wait()
}
在我的本地计算机上,12 核 CPU,此代码将按预期随机输出。 但是当我运行 go playground environment 中的代码时,我得到了意想不到的结果。我知道 Go playground 只使用一个核心来 运行 代码,所以预期的输出应该是一个一个从 No 0 goroutine begin,但它总是从最后一个开始number 第 9 个 goroutine begin。这是正确的还是我遗漏了什么?
Go playground 具有经过修改的调度程序和其他特殊功能。