^陆海空$

博客园 首页 新随笔 联系 订阅 管理

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

  设置一个协程超时:

设置所有协程都不超时:

这样就可以轻松实现啦

posted on 2019-12-16 17:42  ^陆海空$  阅读(3030)  评论(1)    收藏  举报