Golang中runtime的使用詳解

2022-09-24 14:42:19 字數 1056 閱讀 5975

runtime 排程器是個非常有用的東西,關於 runtime 包幾個方法:

numcpu

package main

import (

"fmt"

"runtime"

)func main()

執行結果:

gomaxprocs

golang 預設所有任務都執行在乙個 cpu 核裡,如果要在 goroutine 中使用多核,可以使用 runtime.gomaxprocs 函式修改,當引數小於 1 時使用預設值。

package main

import (

"fmt"

"runtime"

)func init()

func main()www.cppcns.com

gosched

這個函式的作用是讓當前 goroutine 讓出 cpu,當乙個 goroutine 發生阻塞,go 會自動地把與該 goroutine 處於同一系統執行緒的其他 goroutine 轉移到另乙個系統執行緒上去,以使這些 goroutine 不阻塞

package main

import (

"fmt"

"runtime"

)func init()

func main() ()

}()for i :ftxeyqbjtp= 0; i < 4; i++

}結果:

使用多核測試:

package main

import (

"fmt"

"runtime"

)func init()

func main() ()

}()for i := 0; i < 4; i++

}結果:

根據你機器來設定執行時的核數,但是執行結果不一定與上面相同,或者在 main 函式的最後加上 select{} 讓程式阻塞,則結果如下:

多核比較適合那種 cpu 密集型程式,如果是 io 密集型使用多核會增加 cpu 切換的成本。

本文標題: golang中runtime的使用詳解

本文位址:

iOS開發中runtime的使用

事實證明 1.傳送訊息 implementation viewcontroller void viewdidload end implementation uiimage image 載入分類到記憶體的時候呼叫 void load 注意 不能在分類中重寫系統方法imagenamed,因為會把系統的功...

iOS開發中Runtime的實際應用

runtime是objective c的乙個固有特性,及在編譯階段並不能確定真正呼叫的函式名,函式的呼叫在執行時才得到確認。所以我們可以看到,oc在編譯階段沒有報錯的情況下,會在執行過程中出現閃退和崩潰的錯誤,而c語言在編譯過程中就會報錯。ios的錯誤處理 編譯未出報錯,執行卻閃退 動態呼叫特性 c...

Golang中的路由

之前有篇文章比較淺顯的分析了一下golang的伺服器如何實現,還有handler,defaultservemux,handlerfunc的用處。我們現在已經明白了defaultservemux就是存放pattern和handler的地方,我們稱其為路由,那麼我們可能會想,既然golang能夠實現這個...