请教一下两个for内两个协程的执行顺序及结果的原因?
package main
import (
"fmt"
"runtime"
"sync"
)
func main() {
runtime.GOMAXPROCS(1)
wg := sync.WaitGroup{}
wg.Add(20)
for i := 0; i < 10; i++ {
go func() {
fmt.Println("i1: ", i)
wg.Done()
}()
}
for i := 0; i < 10; i++ {
go func(i int) {
fmt.Println("i2: ", i)
wg.Done()
}(i)
}
wg.Wait()
}
结果#
i2: 9
i1: 10
i1: 10
i1: 10
i1: 10
i1: 10
i1: 10
i1: 10
i1: 10
i1: 10
i1: 10
i2: 0
i2: 1
i2: 2
i2: 3
i2: 4
i2: 5
i2: 6
i2: 7
i2: 8
推荐文章: