技术文摘
Golang 函数中怎样运用 WaitGroup 协调并发任务
2025-01-09 03:23:19 小编
Golang 函数中怎样运用 WaitGroup 协调并发任务
在Go语言中,并发编程是其一大特色。当我们在函数中需要处理多个并发任务,并确保所有任务都完成后再进行下一步操作时,WaitGroup就派上了用场。
WaitGroup是Go语言标准库中sync包提供的一个结构体,用于等待一组协程(goroutine)完成。它主要有三个方法:Add、Done和Wait。
首先是Add方法。这个方法用于设置需要等待的协程数量。在启动协程之前,我们需要通过Add方法告诉WaitGroup有多少个协程需要等待。例如,如果我们要启动3个协程,就可以调用wg.Add(3),其中wg是WaitGroup的实例。
接着是Done方法。在每个协程内部,当协程的任务完成后,需要调用Done方法来通知WaitGroup该协程已经完成。Done方法实际上就是将WaitGroup内部的计数器减1。
最后是Wait方法。在所有协程启动之后,我们可以调用Wait方法来阻塞当前的执行流程,直到WaitGroup内部的计数器变为0,也就是所有协程都调用了Done方法。
下面是一个简单的示例代码:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 3; i++ {
wg.Add(1)
go func(num int) {
defer wg.Done()
fmt.Printf("协程 %d 完成任务\n", num)
}(i)
}
wg.Wait()
fmt.Println("所有协程任务完成")
}
在这个示例中,我们启动了3个协程,每个协程完成任务后调用Done方法,最后通过Wait方法等待所有协程完成后输出提示信息。
通过合理运用WaitGroup,我们可以有效地协调Go函数中的并发任务,确保程序的正确执行和资源的合理利用。它使得并发编程变得更加简单和可靠,让我们能够充分发挥Go语言在并发处理方面的优势。
- 12 个微服务架构模式的卓越实践
- PHP 最新统计:市场份额 77.2%,仍为网站首选编程语言
- 你知晓几个高颜值移动端 UI 组件库?
- Python 中的布尔类型
- Spring 启动时核心的 12 个步骤:20 张图深度剖析
- 微服务部署:Jenkins 一键打包部署 NodeJS(Vue)的详细步骤
- C++中 getline 函数多种定义的运用技巧
- Mac 版 Pixelmator Pro 3.4 发布 增强对 PDF 文件的支持
- 五分钟趣谈 Nacos 注册中心技术浅析
- 为何提倡所有类实现 Java 序列化接口
- Spring Cloud Gateway 从零学起:构建可扩展微服务网关
- HashMap 源码深度解析,轻松掌握!
- RabbitMQ 特色功能探索:挖掘尖端特性潜力
- Spring 中 ObjectFactory 与 FactoryBean 接口,你是否使用过?
- 理想视口不存在