代码点读机 / Go / WaitGroup

WaitGroup Go · 常用包功能

并发等待计数器(sync 包):Add(1) 把计数加一,协程干完活调 Done() 减一,主协程 Wait() 卡在原地等计数归零再继续。

怎么用

var wg sync.WaitGroup
wg.Add(1)
go func() { ...; 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("干活") }()
    wg.Wait()
    fmt.Println("干完了")
}

输出

输出 干活,再输出 干完了(Wait 保证顺序)

提醒:AI 生成的并发代码常见三件套 Add/Done/Wait;Done 常用 defer 挂上,保证一定被执行。

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

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