Golang 函数中怎样运用 WaitGroup 协调并发任务

2025-01-09 03:23:19   小编

Golang 函数中怎样运用 WaitGroup 协调并发任务

在Go语言中,并发编程是其一大特色。当我们在函数中需要处理多个并发任务,并确保所有任务都完成后再进行下一步操作时,WaitGroup就派上了用场。

WaitGroup是Go语言标准库中sync包提供的一个结构体,用于等待一组协程(goroutine)完成。它主要有三个方法:AddDoneWait

首先是Add方法。这个方法用于设置需要等待的协程数量。在启动协程之前,我们需要通过Add方法告诉WaitGroup有多少个协程需要等待。例如,如果我们要启动3个协程,就可以调用wg.Add(3),其中wgWaitGroup的实例。

接着是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语言在并发处理方面的优势。

TAGS: Golang 函数 WaitGroup 并发任务

欢迎使用万千站长工具!

Welcome to www.zzTool.com