可以使用 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() 等待所有协程完成。

golang go 开启多个协程,等待所有协程结束

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

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