golang的WaitGroup

tech2022-07-30  175

     WaitGroup 用于等待一组 goroutine 结束,有时候写golang测试程序的时候,在main函数创建一个协程,协程没跑完main就执行完了,或者在main最后价格睡眠,但使用WaitGroup比较正宗。

package main import ( "fmt" "sync" ) func main(){ var wg sync.WaitGroup for i:=1;i<=3;i++ { // 计数加 1 wg.Add(1) go func(i int) { // 计数减 1 defer wg.Done() fmt.Printf("goroutine%d 结束\n", i) }(i) } // 等待执行结束 wg.Wait() fmt.Println("所有 goroutine 执行结束") }

运行:goroutine3结束

           goroutine1结束

           goroutine2结束

           所有goroutine执行结束

 

最新回复(0)