每日一個 Golang Packages 06/10 runtime

Aliliin發表於2020-06-10

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 協議》,轉載必須註明作者和本文連結

高永立

相關文章