在Go语言的世界里,goroutine是最核心的概念之一。它让我们能够轻松地编写高并发程序,就像变魔术一样简单。但很多初学者都会有一个困惑:启动了一个goroutine后,我怎么知道它什么时候执行完了?

这个问题看似简单,实际上涉及到Go语言并发编程的核心——goroutine间的同步与通信。

sync.WaitGroup 是Go语言标准库提供的经典goroutine同步方式。它的设计理念源自计数器思想:每启动一个goroutine,计数器加一;goroutine执行完毕后,计数器减一;当计数器归零时,说明所有goroutine都已经完成。