在 Golang 中,可以使用 WaitGroup 来等待协程完成。WaitGroup 是一个计数器,用于等待一组协程完成。当所有协程完成后,计数器归零,程序继续执行。

下面是一个简单的示例,演示如何使用 WaitGroup 等待协程完成:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    wg.Add(2)

    go func() {
        // do some work
        fmt.Println("goroutine 1")
        wg.Done()
    }()

    go func() {
        // do some work
        fmt.Println("goroutine 2")
        wg.Done()
    }()

    wg.Wait()
    // all goroutines have completed
    fmt.Println("all goroutines completed")
}

在上面的示例中,我们创建了一个 WaitGroup,然后使用 Add() 方法将其计数器设置为 2。接着,我们启动了两个协程,并在每个协程中调用了 wg.Done() 方法,以表示协程已经完成了工作。

最后,我们调用了 wg.Wait() 方法,这将阻塞主线程,直到所有协程都完成工作。一旦所有协程都完成了工作,计数器将归零,程序将继续执行。

需要注意的是,如果协程出现了错误或异常,可能会导致程序死锁或崩溃。因此,在编写协程代码时,务必要处理好错误和异常。

golang 等待协程完成再执行

原文地址: https://www.cveoy.top/t/topic/ufI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录