sync
import sync
WaitGrou
WaitGroup 用于等待一组 goroutine 结束。它有三个方法:
func (wg *WaitGroup) Add(delta int)
func (wg *WaitGroup) Done()
func (wg *WaitGroup) Wait()
- Add 用来添加 goroutine 的个数。
- Done 执行一次数量减 1。
- Wait 用来等待结束:
package main
import "fmt"
import "sync"
import "time"
func main(){
var wg sync.WaithGroup
for i :=0 ; i < 5 ; i ++ {
wg.Add(1)
go func(i int){
defer wg.Done()
time.Sleep(time.Second * time.Duration(i))
fmt.Printf("goroute %d end \n", i)
}(i)
}
wg.Wait()
fmt.Println(all end)
}
go run
goroute 0 end
goroute 1 end
goroute 2 end
goroute 3 end
goroute 4 end
all end
参考
https://golang.org/pkg/sync/ https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter16/16.01.html