在 Go 并发编程中,sync.WaitGroup 和 Channel 是两大核心同步机制。它们分别适用于不同场景,复杂场景下常需组合使用。本文将深入探讨两者的使用模式、常见陷阱及组合实践。1. WaitGroup:等待协程组完成WaitGroup 用于等待一组 goroutine 完成执行,是最基础的同步原语。基础使用模式func main() { var wg sync.WaitGroup for i := 1; i <= 5; i++ { wg.Add(1) // 1. 预增加计数 i := i // 避免闭包捕获同一个变量 go func() { defer wg.Done() // 3. 任务完成时递减计数 fmt.Printf("Worker %d starting\n", i) }() } wg.Wait() // 4. 阻塞等待所有任务完成 }关键注意事项Add 的位置:必须在启动
陈十一
愿 家齐 心静 四季如春