2 回答

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

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