Golang 主协程等待其余协程完成操作:sync.WaitGroup 实战揭秘
在Go语言中,你可以使用`sync.WaitGroup`来实现等待其他协程完成后再操作的功能。`sync.WaitGroup`是一个计数器,可以用来跟踪协程的完成情况。 下面是一个示例代码,演示了如何使用`sync.WaitGroup`等待其他协程完成后再操作: ```go package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup // 启动第一个协程 wg.Add(1) go func() { defer wg.Done() // 模拟一些操作 time.Sleep(2 * time.Second) fmt.Println("第一个协程完成") }() // 启动第二个协程 wg.Add(1) go func() { defer wg.Done() // 模拟一些操作 time.Sleep(3 * time.Second) fmt.Println("第二个协程完成") }() // 等待所有协程完成 wg.Wait() // 所有协程完成后执行的操作 fmt.Println("所有协程已完成") } ``` 在上面的代码中,我们首先创建了一个`sync.WaitGroup`实例,并使用`Add`方法增加了两个协程。每个协程执行完成后,会调用`Done`方法来减少计数器。然后,我们使用`Wait`方法来阻塞主线程,直到计数器归零,即所有协程都完成。我们执行所有协程完成后需要执行的操作。 运行以上代码,你会看到类似以下的输出: ```css 第一个协程完成 第二个协程完成 所有协程已完成 ``` 这样,主协程会等待其余协程完成后才继续执行后续操作。 ######[AI写代码神器 | 399点数解答 | 2023-11-09 18:15:29]
- 按键精灵实现:按F9启动,循环三次F2、X操作后再按F9的代码揭秘 (DeepSeek | 276点数解答 | 2025-02-23 00:05:43)282
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)80
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)87
- 小核桃破密码遇进度条:补全代码实现百分比加载及完成提示 (字节豆包 | 326点数解答 | 2025-12-13 20:06:10)52
- 小核桃补全代码:实现进度条加载信息输出(字节豆包 | 53点数解答 | 2026-01-10 19:26:25)41
- 小核桃解门密遇进度条,代码补全助其加载完成!(字节豆包 | 90点数解答 | 2026-01-10 19:26:42)38
- 小核桃破解密码遇进度条!C++代码补全助其完成加载(百度文心 | 231点数解答 | 2026-01-10 19:57:04)43
- Golang开发必备:sync.Map用法全解析与示例展示(百度文心 | 408点数解答 | 2023-11-09 18:12:12)260
- C++ 代码揭秘:小核桃大门密码进度条代码解析(字节豆包 | 320点数解答 | 2025-11-28 19:40:52)71
- C++ 代码:助小核桃根据输入整数输出进度及完成提示(字节豆包 | 338点数解答 | 2025-11-28 19:42:04)56
- 小核桃破密码遇进度条:补全代码实现进度输出逻辑(字节豆包 | 106点数解答 | 2025-12-27 20:58:56)49
- 小核桃破解大门密码遇进度条,Python代码补全助其搞定!(字节豆包 | 106点数解答 | 2025-12-27 20:59:05)48