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("我結束了")
	}
}

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章