go 协程之WaitGroup超时控制

package main

import (
	"fmt"
	"sync"
	"time"
)

// 调用示例
func main() {
	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 * 7):
		fmt.Println("我超时了")
	case <-ch:
		fmt.Println("我结束了")
	}
}

  

posted on 2022-01-21 15:25  running-fly  阅读(403)  评论(0编辑  收藏  举报

导航