程序到达调度的时机 #
猜猜这个程序的运行结果
package main
import (
"fmt"
"runtime"
)
func g1() {
sum := -1
for {
sum++
}
}
func main() {
runtime.GOMAXPROCS(0)
go g1()
for {
runtime.Gosched() //如果注释掉这一行,将会在开始时候打印,后面不会再打印
fmt.Println("main is scheduled!")
}
}
- 将不会打印[“main is scheduled!”]
调度时机 #
调度时机: 主要是什么时候发生调度:
- 主动调度
- 被动调度
- 剥夺调度
- 运行时间过长
- 系统调用被剥夺P