2 回答

TA貢獻2039條經驗 獲得超8個贊
goroutine 獲得多少 CPU 資源取決于很多因素。
我們一般可以說的是,僅處理可被 100 整除的數字的 goroutine 很可能比另一個 goroutine 等待更多。你不應該擔心這一點,等待通道上的元素不需要 CPU 資源,所以如果你有“足夠”的其他 goroutines 有工作要做,他們可以利用你的 CPU。
由于顯而易見的原因,您的示例很簡單,但在現實生活中,將您的任務抽象為一般任務(例如,處理任何數字都可能是一項任務)、創建和使用一般工作池并發送所有任務會更有利可圖執行到池中。這樣,無論池中有多少 goroutine,如果有工作要做并且有空閑(等待)goroutine,它將承擔任務,盡可能利用您的 CPU 資源。作業處理器(執行者)應該知道如何處理數字是100
或101
。

TA貢獻1877條經驗 獲得超1個贊
如果沒有任何內容可供ch2
閱讀,handler2
則什么也不做。同時,handler1
忙于處理它從中讀取的內容 ch1
。這會消耗更多的 CPU 時間。
從啟動三個 Goroutine 到數據在通道上可用需要多長時間會很有趣。有可能generator
之前已經完成了所有工作handler1
并handler2
準備好從通道中讀取。在這種情況下,handler2
將很快完成其工作,同時handler1
還有工作要做。
您當然可以創建更多 Goroutines,它們handler1
將以一種循環方式處理數據。根據工作的性質,這可能會提高或降低整體性能。
順便說一句,generator
應該在一切都寫完的時候。close
ch1
ch2
- 2 回答
- 0 關注
- 158 瀏覽
添加回答
舉報