在Go语言中,可以使用`sync`包中的`WaitGroup`来实现线程同步。以下是一个简单的示例: ```go package main import ( "fmt" "sync" "time" ) func worker(id int, wg *sync.WaitGroup) { defer wg.Done() // 当函数执行完毕时,调用Done方法,通知WaitGroup已完成一个任务 fmt.Printf("Worker %d starting\n", id) time.Sleep(time.Second) // 模拟耗时操作 fmt.Printf("Worker %d done\n", id) } func main() { var wg sync.WaitGroup // 创建一个WaitGroup实例 for i := 1; i <= 5; i++ { wg.Add(1) // 为每个worker添加一个计数器 go worker(i, &wg) // 启动一个新的goroutine来执行worker函数 } wg.Wait() // 等待所有worker完成 fmt.Println("All workers done") } ``` 在这个示例中,我们创建了一个`WaitGroup`实例,并为每个worker添加了一个计数器。当worker函数执行完毕时,它会调用`Done`方法,通知`WaitGroup`已完成一个任务。`main`函数中的`wg.Wait()`会阻塞,直到所有worker都调用了`Done`方法。这样,我们就可以确保所有worker都完成了它们的任务,然后再继续执行后续的代码。 [2024-07-23 13:42:25 | AI写代码神器 | 346点数解答]