MST

星途 面试题库

面试题:Go中WaitGroup如何实现多个协程同步执行任务

假设有一个任务列表,每个任务是一个简单的打印函数,你需要使用Go的WaitGroup来实现所有任务并发执行,并且等待所有任务完成后再打印“All tasks are done”,请编写相关代码。
12.0万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "sync"
)

func printTask(taskNum int, wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Printf("Task %d is running\n", taskNum)
}

func main() {
    var wg sync.WaitGroup
    tasks := 5

    for i := 1; i <= tasks; i++ {
        wg.Add(1)
        go printTask(i, &wg)
    }

    wg.Wait()
    fmt.Println("All tasks are done")
}