-
Gosched:让当前协程让出cpu以让其他协程运行,它不会挂起当前协程,因此当前协程未来会继续执行
-
NumCPU:返回当前系统的CPU核数量
-
GOMAXPROCS:设置最大的可同时使用的CPU核数
-
Goexit:退出当前goroutine(但是defer语句会照常执行)
-
NumGoroutine:返回真该执行和排队的任务总数
-
GOOS:目标操作系统
- GOROOT:返回本机的GO路径
1. runtime.Gosched() 让出当前cpu 时间片
import ( "fmt" "runtime" ) func main() { go func(s string) { for i := 0; i < 2; i++ { fmt.Println(s) } }("world") for i := 0; i < 2; i++ { // 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其它等待的任务运行, runtime.Gosched() fmt.Println("hello") } }
2. runtime.Goexit() 退出当前协程
package main import ( "fmt" "runtime" "time" ) func test1() { defer fmt.Println("cc") //return //终止此函数 runtime.Goexit() //终止所在的协程 fmt.Println("ddd") } func main() { //创建新建的协程 go func() { fmt.Println("aaaaaa") //调用了别的函数 test1() fmt.Println("bbbbb") }() //防止主协程执行完毕 time.Sleep(100*time.Second) }