技术文摘
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语言在并发处理方面的优势。
- MySQL 加减乘除、求余、求平均值及查询不等于某数值的实例
- 数据库的第一范式、第二范式和第三范式是什么
- Centos7.3 下 mysql5.7 安装配置图文教程
- MySQL 中无需结尾符号即可执行的语句总结
- MySQL怎样导出指定表的数据
- 分享 MySQL 无法启动的解决办法示例
- MySQL 8.0.2复制新特性深度剖析
- MySQL 中 curdate() 函数代码示例
- JDBC 连接并操作 MySQL:直接操作与预处理方式
- MySQL怎样取消密码强度验证
- MyISAM与InnoDB存储引擎索引实现方式差异
- Spring boot操作mysql数据库的方法
- MySQL数据库“Too many connections”报错的解决措施
- MySQL 数据库安装后服务中无 MySQL 启动项的详细解析
- MySQL事务详细解析