一、 通過runtime包進行多核設定
1.numcpu()獲取當前系統的cpu核數
2.gomaxprocs設定當前程式執行時占用的cpu核數
版本1.6之前預設是使用1個核,而之後是全部使用。
好玩的程式:
func dosomething()我的電腦是8核的,分別執行1 2 4 8,看下cpu的使用率:}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(
"程式退出")
}
圖一 未開始執行
圖二 執行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...