go runtime包 running

  

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

  

原文地址:https://www.cnblogs.com/zxqblogrecord/p/15535640.html