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

avatar
作者
猴君
阅读量:0

在 Go 中使用 sync.WaitGroup 来处理并发任务,可以确保在所有任务完成之前等待主程序的执行。下面是一个简单的例子:

package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup numTasks := 10 // 增加任务数 wg.Add(numTasks) for i := 0; i < numTasks; 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") } 

在上面的例子中,我们首先创建了一个 WaitGroup 对象 wg,然后使用 Add() 方法增加了需要等待的任务的数量。在每个任务的 goroutine 中,我们使用 defer wg.Done() 来在任务执行完毕后减少任务数。最后,我们使用 Wait() 方法来等待所有任务完成,然后输出相应的信息。

对于每个任务,你可以在 go func() 中执行具体的任务逻辑,例如进行数据处理、调用 API,或者执行其他操作。每个任务完成时,调用 wg.Done() 来减少任务数。

使用 sync.WaitGroup 的好处是可以确保在所有任务完成之前主程序不会退出。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!