golang go 开启多个协程,等待所有协程结束
可以使用 sync.WaitGroup 来等待所有协程结束。具体实现如下:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 3; i++ {
wg.Add(1)
go func(i int) {
// 执行协程任务
fmt.Printf("Goroutine %d done!\n", i)
wg.Done() // 告诉 WaitGroup 任务已完成
}(i)
}
wg.Wait() // 等待所有协程完成
fmt.Println("All goroutines done!")
}
上述代码中,首先定义一个 WaitGroup 变量 wg,然后循环开启 3 个协程,每个协程执行一些任务,并在任务完成后调用 wg.Done() 告诉 WaitGroup 任务已完成。最后调用 wg.Wait() 等待所有协程完成。

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