Go語言中Goroutine的設定

2022-01-18 14:40:02 字數 996 閱讀 6248

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

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

2.gomaxprocs設定當前程式執行時占用的cpu核數

版本1.6之前預設是使用1個核,而之後是全部使用。

好玩的程式:

func dosomething() 

}func main()

", err)

return

}

//設定核數

runtime.gomaxprocs(num)

for i := 0; i < 10; i++

fmt.println(

"程式已經開始執行")

time.sleep(time.second * 30

)

for j := 5; j > 0; j--

fmt.printf(

"程式退出")

}

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

圖一 未開始執行

圖二 執行1個cpu

圖三 執行2個cpu

圖四 執行4個cpu

圖五 執行8個cpu

二、goroutine的排程原理複習

之前的記錄

Go語言學習 goroutine

簡介 goroutine是go語言中最為nb的設計,也是其魅力所在,goroutine的本質是協程,是實現平行計算的核心。goroutine使用方式非常的簡單,只需使用go關鍵字即可啟動乙個協程,並且它是處於非同步方式執行,你不需要等它執行完成以後在執行以後的 go func 通過go關鍵字啟動乙個...

Go語言 併發程式設計goroutine

在go語言中併發是通過goroutine實現。goroutine類似於執行緒,屬於使用者態執行緒。go語言也可以通過channel 管道 與多個goroutine進行通訊。goroutine類似於執行緒,在go語言中底層分配了乙個執行緒池,因此不需要我們對其進行管理,由go執行時的routine進行...

go 語言併發機制 goroutine 初探

go 語言的乙個很大的優勢就是可以方便地編寫併發程式。go 語言內建了 goroutine 機制。這是一種類似 coroutaine 協程 的東西。但是又不完全相同。比如這個例子 package main import fmt strconv func main func task name str...