解释sync.WaitGroup的用途和工作原理。在什么情况下应该使用它?
sync.WaitGroup是Go语言用于goroutine同步的工具。
用途:让一个或多个goroutine等待一组其他goroutine全部完成任务后,再继续执行,避免主逻辑提前退出导致子goroutine被终止。
工作原理:
内部通过计数器实现:
Add():修改计数器的值,用于声明需等待的goroutine数量
Done:等价于Add(-1),由子goroutine任务结束时调用,标记自身完成
wait:阻塞当前goroutine直到计数器归0,,此时所有被等待的goroutine已执行完毕
需协调多goroutine执行顺序,确保一组并发任务全部完成后在执行后续逻辑。