首页 文章资讯内容详情

WaitGroup

2026-06-01 4 花语

本文内容纲要:

WaitGroup在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组、团队的意思,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行。

先说说WaitGroup的用途:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。

WaitGroup总共有三个方法:Add(deltaint),Done(),Wait()。简单的说一下这三个方法的作用。

Add:添加或者减少等待goroutine的数量

Done:相当于Add(-1)

wait:执行阻塞,直到所有的WaitGroup数量变成0 packagemain import( "fmt" "sync" ) funccalc(w*sync.WaitGroup,iint){ fmt.Println("calc:",i) w.Done() } funcmain(){ wg:=sync.WaitGroup{} fori:=0;i<10;i++{ wg.Add(1) gocalc(&wg,i) } wg.Wait() fmt.Println("allgoroutinefinish") }

运行结果:

calc:6 calc:9 calc:0 calc:8 calc:3 calc:5 calc:2 calc:4 calc:7 calc:1 allgoroutinefinish

本文内容总结:

原文链接:https://www.cnblogs.com/itbsl/p/10637769.html