如何使用Go WaitGroup处理并发任务

2023-10-16 1458阅读

温馨提示:这篇文章已超过520天没有更新,请注意相关的内容是否还可用!

在 Go 中使用 `sync.WaitGroup` 来处理并发任务,可以确保在所有任务完成之前等待主程序的执行。下面是一个简单的例子:
```go
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
numTasks := 10
// 增加任务数
wg.Add(numTasks)
for i := 0; i go func(taskNum int) {
defer wg.Done() // 每个任务执行完成后减少任务数
fmt.Printf("Task %d is running\n", taskNum)
// 执行具体任务
}(i)
}
// 等待所有任务完成
wg.Wait()
fmt.Println("All tasks are completed")
}
```
在上面的例子中,我们首先创建了一个 `W活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看aitGroup` 对象 `wg`,然后使用 `Add()` 方法增加了需要等待的任务的数量。在每个任务的 goroutine 中,我们使用 `defer wg.Done()` 来在任务执行完毕后减少任务数。最后,我们使用 `Wait()` 方法来等待所有任务完成,然后输出相应的信息。
对于每个任务,你可以在 `go func()` 中执行具体的任务逻辑,例如进行数据处理、调用 API,或者执行其他操作。每个任务完成时,调用 `wg.Done()` 来减少任务数。
使用 `sync.WaitGroup` 的好处是可以确保在所有任务完成之前主程序不会退出。

如何使用Go WaitGroup处理并发任务
(图片来源网络,侵删)
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]