亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

確定所有工人都完成

確定所有工人都完成

Go
SMILET 2023-03-21 16:52:31
按照Marcio 的線程池實現,是否可以確定所有工作何時完成?等待 JobQueue 清空是微不足道的:// Wait for the job queue to clearfor len(JobQueue) > 0 {    // Just wait}然而在那之后可能還有 goroutines 在等待 workers,或者 workers 還沒有完成所有的任務:func (d *Dispatcher) dispatch() {    for {        select {        case job := <-JobQueue:            // a job request has been received            go func(job Job) {                // try to obtain a worker job channel that is available.                // this will block until a worker is idle                jobChannel := <-d.WorkerPool                // dispatch the job to the worker job channel                jobChannel <- job            }(job)        }    }}最好的方法是什么?在dispatcher中添加一個WaitGroup,以及查詢WaitGroup狀態的方法?對此的任何指示將不勝感激。
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

根據文檔

WaitGroup 等待一組 goroutine 完成。

所以,是的,要等待一組 goroutines 完成,我會推薦一個WaitGroup. 正如文檔所述,您要求Add每個工作人員開始,以及Done每個工作人員何時完成。您的for len()繁忙循環將替換為:

wg.Wait()

根據文檔。


查看完整回答
反對 回復 2023-03-21
  • 1 回答
  • 0 關注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號