go runtime包

 

  

  • 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)
}

  

posted on 2021-11-10 20:56  running-fly  阅读(70)  评论(0编辑  收藏  举报

导航