儘管使用了GOMAXPROCS(2),程式仍然停滯
遇到一個令人困惑的場景,其中配置了runtime.GOMAXPROCS (2) 的程式繼續在數位輸出期間掛起是一個令人困惑的情況。儘管 CPU 使用率很高,但 for 迴圈 goroutine 似乎阻礙了程式功能。
深入探究原因
這段程式碼的罪魁禍首在於存在一個名為forever 連續執行無限 for 迴圈而不會暫停。此操作會導致整個作業系統執行緒的完全消耗,從而有效地干擾運行時的 goroutine。
解決問題
要糾正這種情況,至關重要的是消除不必要的永久 goroutine。此外,在 show 函數的 for 迴圈中插入調度點可以恢復程式功能。
修改代碼
消除繁忙循環
避免缺乏任何生產性工作的繁忙循環至關重要。它們不必要地消耗 CPU 資源,並且不利於 goroutine 的整體效能。相反,請考慮將暫停合併到循環中或完全消除循環以優化程序行為。
以上是為什麼我的 Go 程式在 `runtime.GOMAXPROCS(2)` 和高 CPU 使用率的情況下掛起?的詳細內容。更多資訊請關注PHP中文網其他相關文章!