WaitGroup
本文内容纲要:
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