每日一个 Golang Packages 06/10 runtime

2020/06/10

package main

import (
    "fmt"
    "runtime"
)

func main() {
    // 获取 goroot 目录
    fmt.Println("GOROOT-->", runtime.GOROOT())
    // 查看操作系统
    fmt.Println("os/platforms-->", runtime.GOOS)
    // 获取逻辑cpu 的数量
    fmt.Println("CPU 数量", runtime.NumCPU())
    // 设置 go 程序执行最大的 cpu 数量(1- 256)
    n := runtime.GOMAXPROCS(runtime.NumCPU())
    fmt.Println(n)

    // gosched  让出时间片,先让别的 goroutine 执行
    go func() {
        for i := 0; i < 5; i++ {
            fmt.Println("goroutine...")
        }  
        fmt.Println("goroutine 开始。")
        fun() // 调用 fun 函数 defer 会被执行
        fmt.Println("goroutine 结束。")
    }()

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

func fun() {
    defer fmt.Println("defer....")
    // 终止函数执行 defer 会正常执行
    // return 

    // 终止当前的 goroutine
    runtime.Goexit() 
    fmt.Println("fun 函数")
}

顺便佛系一下用 go 做做 leetcode 的练习题同步到了 GitHub 大家也可以看看。

一步一个脚印,稳扎稳打,重新出发!从基本的 Golang Packages 记忆开始,坚持 ing!

本作品采用《CC 协议》,转载必须注明作者和本文链接
微信搜索:上帝喜爱笨人
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!