Golang 怎么给WaitGroup加超时时间

怎么给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("我结束了")
	}    

  这样就可以轻松实现啦

猜你喜欢

转载自www.cnblogs.com/hughlhk/p/12050337.html