多協程執行後使用channel收集結果--優雅版本

go浪-逍遙子發表於2021-12-03

> 由於上個版本由於關閉channel太low了,這是給到優雅版本 僅供參考

func job(index int) int  {
    time.Sleep(time.Millisecond*500)
    return index
}

func main()  {
    num:=5
    result:=make(chan int)
    wg:=sync.WaitGroup{}
    for i:=0;i<num;i++{
        wg.Add(1)
        go func(index int) {
            defer wg.Done()
            result<-job(index)
        }(i)
    }
    go func() {
        defer close(result)
        wg.Wait()
    }()
    for item:=range result{
        fmt.Println(item)
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章