亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言中Goroutine的設置方式

 更新時間:2022年07月22日 08:42:45   作者:奮斗的大橙子  
這篇文章介紹了Go語言中Goroutine的設置方式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、 通過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++ {
        //做個死循環(huán)
        go doSomething()
    }

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

    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語言中并發(fā)的工作原理

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

相關文章

  • Go語言實現常見限流算法的示例代碼

    Go語言實現常見限流算法的示例代碼

    計數器、滑動窗口、漏斗算法、令牌桶算法是我們常見的幾個限流算法,本文將依次用Go語言實現這幾個限流算法,感興趣的可以了解一下
    2023-05-05
  • 一文帶你掌握Golang基礎之通道

    一文帶你掌握Golang基礎之通道

    在Java中,多線程之間的通信方式有哪些?記得嗎?Java多線程間通信的解決方案有很多種,比如:synchronized。在go中,就一種:通道,文中介紹的非常詳細,感興趣的同學可以參考下
    2023-05-05
  • 一文帶你了解Go語言中鎖特性和實現

    一文帶你了解Go語言中鎖特性和實現

    Go語言中的sync包主要提供的對并發(fā)操作的支持,標志性的工具有cond(條件變量)?once?(原子性)?還有?鎖,本文會主要向大家介紹Go語言中鎖的特性和實現,感興趣的可以了解下
    2024-03-03
  • go語言調用其他包中的函數簡單示例

    go語言調用其他包中的函數簡單示例

    這篇文章主要給大家介紹了關于go語言調用其他包中的函數的相關資料,文中還介紹了Go語言同一個包中不同文件之間函數調用的相關問題,需要的朋友可以參考下
    2023-01-01
  • Go?interface{}?轉切片類型的實現方法

    Go?interface{}?轉切片類型的實現方法

    本文主要介紹了Go?interface{}?轉切片類型的實現方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 關于go-micro與其它gRPC框架之間的通信問題及解決方法

    關于go-micro與其它gRPC框架之間的通信問題及解決方法

    在之前的文章中分別介紹了使用gRPC官方插件和go-micro插件開發(fā)gRPC應用程序的方式,都能正常走通。不過當兩者混合使用的時候,互相訪問就成了問題,下面通過本文給大家講解下go-micro與gRPC框架通信問題,一起看看吧
    2022-04-04
  • Golang信號處理及如何實現進程的優(yōu)雅退出詳解

    Golang信號處理及如何實現進程的優(yōu)雅退出詳解

    這篇文章主要給大家介紹了關于Golang信號處理及如何實現進程的優(yōu)雅退出的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • Go日常開發(fā)常用第三方庫和工具介紹

    Go日常開發(fā)常用第三方庫和工具介紹

    這篇文章主要介紹了Go日常開發(fā)常用第三方庫和工具介紹,主要有web開發(fā)、數據庫開發(fā)、Redis開發(fā)需要的朋友可以參考下
    2022-11-11
  • GoFrame實現順序性校驗示例詳解

    GoFrame實現順序性校驗示例詳解

    這篇文章主要為大家介紹了GoFrame實現順序性校驗示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Golang?中的?條件變量(sync.Cond)詳解

    Golang?中的?條件變量(sync.Cond)詳解

    這篇文章主要介紹了Golang?中的?條件變量(sync.Cond)詳解的相關資料,需要的朋友可以參考下
    2022-12-12

最新評論