package main
import (
"fmt"
"runtime"
"time"
)
func main() {
go func() {
for i := 0; i < 5; i++ {
if i == 3 {
runtime.Gosched()
}
fmt.Println("g1", i)
}
}()
go func() {
fmt.Println("g2")
}()
time.Sleep(1 * time.Second)
}
各位大神,请问这个执行结果是什么呀?
有疑问加站长微信联系(非本文作者)

这种的,都是不确定的
这个runtime.Gosched()是让出时间片的函数,意思就是i=3的时候打印g2,然后再返回上面那个继续执行对吗?
runtime.Gosched() 只是说让 schedule 重新调度 runnable 的 goroutine,但具体会先执行哪个,是不确定的,而且,多核情况下,还存在并行。
我明白了 谢谢大神!