快速响应:Go WaitGroup在高并发场景下的应用

   2025-02-18 7320
核心提示:在高并发场景下,Go的WaitGroup是一种有效的工具,用于等待一组goroutine完成其任务。WaitGroup有三个方法可以使用:Add(n int)

在高并发场景下,Go的WaitGroup是一种有效的工具,用于等待一组goroutine完成其任务。

WaitGroup有三个方法可以使用:

Add(n int):表示等待的goroutine数量增加n。

Done():表示等待的goroutine数量减少1。

Wait():阻塞等待,直到等待的goroutine数量为0。

下面是一个使用WaitGroup的示例代码,在高并发场景下,使用goroutine处理任务,并使用WaitGroup等待所有goroutine完成:

package mainimport ("fmt""sync""time")func main() {var wg sync.WaitGroupfor i := 0; i < 10; i++ {wg.Add(1)go func(n int) {defer wg.Done()time.Sleep(time.Second) // 模拟任务处理时间fmt.Printf("Task %d completed\n", n)}(i)}wg.Wait() // 等待所有任务完成fmt.Println("All tasks completed")}

在上面的代码中,我们创建了10个goroutine来处理任务。每个goroutine在完成任务后,调用Done()方法来减少等待的goroutine数量。最后,调用Wait()方法来阻塞等待,直到所有goroutine完成任务。

通过使用WaitGroup,我们可以保证在高并发场景下,所有的goroutine都能够完成任务后再执行后续的操作。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言