當Go Scheduler 在GMP 模型中建立新的M 和P
在Go 的GMP(Goroutine、Machine、Processor)模型中,調度器根據特定條件管理M(機器)和P(處理器)的創建。
M 創建
M 是為了響應特定事件而創建的,例如:
P 建立
P 是在程式啟動時根據 GOMAXPROCS 環境變數建立的,該變數指定可用P的最大數量。預設值為系統上邏輯CPU的數量。
範例分析
在您的範例程式碼中,您有兩批goroutine執行資料庫操作。每個 goroutine 執行阻塞 I/O 操作。
因此,在您的情況下,調度程序將為第二批 goroutine 創建超過 8 M,因為操作被阻塞。 P 將根據 GOMAXPROCS 值限制為 1,但 M 將根據需要動態建立。
其他資源
進一步了解,請參考以下內容資源:
以上是當 Goroutine 執行阻塞操作時,Go 調度器如何建立新的 M 和 P?的詳細內容。更多資訊請關注PHP中文網其他相關文章!