golang 等待协程完成再执行
在 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() 方法,这将阻塞主线程,直到所有协程都完成工作。一旦所有协程都完成了工作,计数器将归零,程序将继续执行。
需要注意的是,如果协程出现了错误或异常,可能会导致程序死锁或崩溃。因此,在编写协程代码时,务必要处理好错误和异常。
原文地址: https://www.cveoy.top/t/topic/ufI 著作权归作者所有。请勿转载和采集!