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

  設置一個協程超時:

設置所有協程都不超時:

這樣就可以輕松實現啦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM