WaitGroup:同步等待组。ps:值类型,传递时需要指针
内置的计数器:要执行的goroutine的数量
Add(3):设置3个要执行的goroutine
Done():将内置的计数器数量减一。等同于Add(-1)
Wait():等待。导致执行wait的goroutine进入阻塞状态。同步等待组中的计数器的值为0解除阻塞。
例:
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
func main() {
wg.Add(2)
go print1()
go print2()
wg.Wait()
}
func print1() {
for i:=1;i<=100;i++{
fmt.Println("-----goroutine1",i)
}
wg.Done()
}
func print2() {
for j:=1;j<=100;j++{
fmt.Println("goroutine2",j)
}
wg.Done()
}