Go语言:用sync包的WaitGroup实现线程同步代码示例
在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都完成了它们的任务,然后再继续执行后续的代码。 ######[AI写代码神器 | 346点数解答 | 2024-07-23 13:42:25]
- Python 实现句子反转:单词大小写转换与数字倒转(字节豆包 | 131点数解答 | 2024-11-11 16:44:49)429
- Python 实现句子单词逆序及大小写、数字转换,开发要点揭秘!(百度文心 | 451点数解答 | 2025-10-25 11:33:27)90
- C语言实现:句子反转,单词大小写与数字倒转处理(百度文心 | 1010点数解答 | 2025-10-25 11:34:26)121
- C语言实现句子反转:处理输入空格、内存管理与数字判断的要点(阿里通义 | 712点数解答 | 2025-10-25 11:35:19)98
- C++实现机关门数字判断程序,依据3的倍数规则输出结果(字节豆包 | 167点数解答 | 2026-03-14 20:35:32)35
- C++实现机关门数字判断程序,依据3的倍数决定操作(字节豆包 | 132点数解答 | 2026-03-14 20:36:37)25
- C 语言实现句子反转:单词大小写转换与数字倒转(字节豆包 | 393点数解答 | 2024-11-11 16:45:21)558
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)56
- SQL:[pr_createdtables]存储过程代码解析及表创建准备 (字节豆包 | 33点数解答 | 2024-08-29 15:34:33)358
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)371
- Python开发必懂:同步、异步、阻塞、非阻塞概念全解析(阿里通义 | 263点数解答 | 2023-11-08 00:56:38)247
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)286