MST

星途 面试题库

面试题:Go中WaitGroup与复杂并发场景

假设有一个任务队列,里面有若干任务需要并发执行,每个任务执行的时间不同。请使用Go语言结合WaitGroup实现一个程序,能够并发处理这些任务,并在所有任务完成后统计总执行时间。
28.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    var wg sync.WaitGroup
    tasks := []int{2, 3, 1} // 模拟每个任务执行时间(秒)

    start := time.Now()

    for _, task := range tasks {
        wg.Add(1)
        go func(t int) {
            defer wg.Done()
            time.Sleep(time.Duration(t) * time.Second)
        }(task)
    }

    wg.Wait()
    elapsed := time.Since(start)
    fmt.Printf("总执行时间: %s\n", elapsed)
}