日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Go語言中Goroutine的設置方式_Golang

作者:奮斗的大橙子 ? 更新時間: 2022-09-15 編程語言

一、 通過runtime包進行多核設置

1.NumCPU()獲取當前系統的cpu核數

2.GOMAXPROCS設置當前程序運行時占用的cpu核數

版本1.6之前默認是使用1個核,而之后是全部使用。

好玩的程序:

func doSomething() {
    var i int
    for {
        i++
    }
}

func main() {

    cpu := runtime.NumCPU()
    fmt.Println("本機cpu核數:", cpu)

    fmt.Println("輸入模擬的cpu數:")
    reader := bufio.NewReader(os.Stdin)
    buf, _ := reader.ReadBytes('\n')
    cmdStr := (string)(buf)
    num, err := strconv.Atoi(strings.Trim(cmdStr, "\r\n"))

    if err != nil || num > cpu || num <= 0 {
        fmt.Println("輸入的數字不正確 err:{0}", err)
        return
    }

    //設置核數
    runtime.GOMAXPROCS(num)

    for i := 0; i < 10; i++ {
        //做個死循環
        go doSomething()
    }

    fmt.Println("程序已經開始執行")

    time.Sleep(time.Second * 30)

    for j := 5; j > 0; j-- {
        fmt.Printf("程序倒計時退出: %ds...\n", j)
        time.Sleep(time.Second)
    }
    fmt.Printf("程序退出")
}

我的電腦是8核的,分別運行1 2 4 8,看下cpu的使用率:

圖一 未開始運行

圖二 運行1個cpu

圖三 運行2個cpu

圖四 運行4個cpu

圖五 運行8個cpu

二、Goroutine的調度原理復習

之前的記錄 Go語言中并發的工作原理

原文鏈接:https://www.cnblogs.com/dcz2015/p/11225305.html

欄目分類
最近更新