| 123456789101112131415161718192021222324252627 |
- package main
- import (
- "fmt"
- "sync"
- "time"
- )
- const N = 10 // 任务数量
- func main() {
- var wg sync.WaitGroup
- for i := 1; i <= N; i++ {
- wg.Add(1) // 计数器 +1
- go func(id int) {
- defer wg.Done() // 任务完成时 -1
- fmt.Printf("task %d start\n", id)
- time.Sleep(time.Duration(id*100) * time.Millisecond) // 模拟耗时
- fmt.Printf("task %d done\n", id)
- }(i)
- }
- fmt.Println("main: waiting for all tasks...")
- wg.Wait() // 阻塞直到计数器为 0
- fmt.Println("main: all tasks completed, exit")
- }
|