代码点读机 / Go / sync.WaitGroup

sync.WaitGroup Go · 包功能

等待组:主 goroutine 用它等待一组子 goroutine 全部完成。

怎么用

var wg sync.WaitGroup; wg.Add(n); defer wg.Done(); wg.Wait()

小例子

package main
import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    wg.Add(1)
    go func() {
        defer wg.Done()
        fmt.Println("done")
    }()
    wg.Wait()
}

运行结果

输出 done

提醒:Add 必须在启动 goroutine 之前调用,否则可能漏等

官方文档:https://pkg.go.dev/sync#WaitGroup

在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Go全部词条