怎么給WaitGroup加超時時間呢?剛好群里有人問了我這個問題,我就把我的方法在這邊貼出來了。
代碼如下:
var w = sync.WaitGroup{} var ch = make(chan bool) w.Add(2) go func() { time.Sleep(time.Second * 2) fmt.Println("我2秒") w.Done() }() go func() { time.Sleep(time.Second * 6) fmt.Println("我6秒") w.Done() }() go func() { w.Wait() ch <- false }() select { case <-time.After(time.Second * 5): fmt.Println("我超時了") case <-ch: fmt.Println("我結束了") }
設置一個協程超時:
設置所有協程都不超時:
這樣就可以輕松實現啦