Golang进阶-runtime包

1. 包含了go运行时系统交互的操作,比如控制goroutines的函数,还包括了反射包的使用;类似java和.net的虚拟机,管理包括内存分配,垃圾回收等

func main() {
    //获取goroot的目录
    fmt.Println("GOROOT:", runtime.GOROOT())
    //获取操作系统
    fmt.Println("os:",runtime.GOOS)
    //获取cpu的数量
    fmt.Println("逻辑cpu的数量:",runtime.NumCPU())

    //设置go程序执行的最大cpu的数量:[1,256]
    n := runtime.GOMAXPROCS(runtime.NumCPU());
    fmt.Println(n)

    //gosched, 让出cpu
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("go1...")
        }
    }()

    for i:= 0; i<4; i++ {
        //让出时间片,先让别的goroutine执行
        runtime.Gosched()
        fmt.Println("main...")
    }

    runtime.Goexit()
    //终止当前的goroutine
}

标签: none

添加新评论