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-micro與其它gRPC框架之間的通信問題及解決方法
在之前的文章中分別介紹了使用gRPC官方插件和go-micro插件開發(fā)gRPC應用程序的方式,都能正常走通。不過當兩者混合使用的時候,互相訪問就成了問題,下面通過本文給大家講解下go-micro與gRPC框架通信問題,一起看看吧2022-04-04

