為什麼 Go 語句不並行執行?
在你的 Go 程式碼中,你嘗試使用 goroutine 並發執行 sum 函數。然而,儘管您的系統上有多個核心可用,但您會遇到僅使用一個核心的問題。
要修正此問題,您需要設定程式以允許並行處理。這是透過設定 GOMAXPROCS 環境變數或使用 runtime.GOMAXPROCS 函數來指定執行時間支援可以利用的作業系統執行緒數來實現的。
在某些情況下,增加 GOMAXPROCS 的值實際上可以讓您的程式慢一點。當您的程式包含多個透過通道頻繁通訊的 goroutine 時,就會發生這種情況。在線程之間發送資料所涉及的上下文切換代價變得很大,對效能產生不利影響。
Go 的 goroutine 排程器尚未完全優化作業系統執行緒的使用。不過,預計未來會有所改進,以便更有效地處理此類案件。在此之前,建議根據每個應用程式調整 GOMAXPROCS 的值以實現最佳效能。
以上是為什麼我的 Go 程式碼不使用多核心進行平行處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!