按照Marcio 的線程池實(shí)現(xiàn),是否可以確定所有工作何時(shí)完成?等待 JobQueue 清空是微不足道的:// Wait for the job queue to clearfor len(JobQueue) > 0 { // Just wait}然而在那之后可能還有 goroutines 在等待 workers,或者 workers 還沒有完成所有的任務(wù):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中添加一個(gè)WaitGroup,以及查詢WaitGroup狀態(tài)的方法?對(duì)此的任何指示將不勝感激。
1 回答

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)文檔:
WaitGroup 等待一組 goroutine 完成。
所以,是的,要等待一組 goroutines 完成,我會(huì)推薦一個(gè)WaitGroup
. 正如文檔所述,您要求Add
每個(gè)工作人員開始,以及Done
每個(gè)工作人員何時(shí)完成。您的for len()
繁忙循環(huán)將替換為:
wg.Wait()
根據(jù)文檔。
- 1 回答
- 0 關(guān)注
- 91 瀏覽
添加回答
舉報(bào)
0/150
提交
取消