sync.WaitGroup和sync.Once的爱恨情仇

2024年 6月 5日 50.8k 0

今天,我们将继续探讨Go语言中的两个重要的同步工具:sync.WaitGroup 和 sync.Once。

sync.WaitGroup

sync.WaitGroup 是Go语言中的一种计数信号量,用于等待一组 goroutine 完成。它常用于等待一组并发任务全部完成后再继续执行。

使用方法

  • 声明一个 sync.WaitGroup 类型的变量。
  • 在每个 goroutine 启动之前调用 Add 方法,增加等待计数。
  • 在每个 goroutine 完成时调用 Done 方法,减少等待计数。
  • 在主 goroutine 中调用 Wait 方法,阻塞直到所有 goroutine 完成。
  • 示例代码

    package main

    import (
    "fmt"
    "sync"
    "time"
    )

    func worker(id int, wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Printf("Worker %d starting\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Worker %d done\n", id)
    }

    func main() {
    var wg sync.WaitGroup

    for i := 1; i

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论