[Go] Golang并发控制: WaitGroup 含义和常规用法

 

一个 WaitGroup 等待一个 goroutine 集合的结束。

主 goroutine 调用 Add 设置需要等待的 goroutine 数量。

接下来每个 goroutine 运行并在结束时调用 Done。

同时,Wait 可以用来阻塞直到所有的 goroutine 结束。

 

复制代码
package main

import (
    "fmt"
    "sync"
    "time"
)
/**
 * @https://www.cnblogs.com/farwish
 */
func main() {
    // 1.WaitGroup用于等待goroutine的集合完成
    var wg sync.WaitGroup

    // 2.设置数量2个goroutine需要等待
    wg.Add(2)

    go func() {
        time.Sleep(2 * time.Second)
        fmt.Println("1号完成")
        // 3.goroutine执行结束调用Done
        wg.Done()
    }()

    go func() {
        time.Sleep(2 * time.Second)
        fmt.Println("2号完成")
        wg.Done()
    }()

    // 4.阻塞直到子goroutine都结束
    wg.Wait()

    fmt.Println("都完成了")
}
复制代码

 

Refer:Go SDK/src/sync/waitgroup.go

Link:https://www.cnblogs.com/farwish/p/15840547.html

posted on   ercom  阅读(182)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

统计

点击右上角即可分享
微信分享提示