1 Star 0 Fork 0

码农兴哥/go-demo-2025

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main2_1.go 982 Bytes
一键复制 编辑 原始数据 按行查看 历史
码农兴哥 提交于 2025-12-22 17:30 +08:00 . WaitGroup的demo
package main
import (
"fmt"
"sync"
"time"
)
// 当我们知道需要等待的具体任务数量时,可以一次性添加所有任务。
// WaitGroup 批量添加示例: `sync.WaitGroup`可以在启动goroutine前批量添加任务,避免在循环中调用`Add`方法
func batchAddExample() {
fmt.Println("=== WaitGroup 批量添加示例 ===")
var wg sync.WaitGroup
tasks := []string{"下载文件", "处理图片", "发送邮件", "备份数据"}
// 一次性添加所有任务(推荐方式)
wg.Add(len(tasks))
// 启动所有goroutine
for i, task := range tasks {
go func(id int, taskName string) {
defer wg.Done()
fmt.Printf("Worker %d: 开始执行 %s\n", id, taskName)
time.Sleep(time.Duration(id+1) * 500 * time.Millisecond)
fmt.Printf("Worker %d: 完成 %s\n", id, taskName)
}(i, task)
}
fmt.Println("主goroutine: 等待所有任务完成...")
wg.Wait()
fmt.Println("所有任务已完成")
}
func main() {
batchAddExample()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/rxbook/go-demo-2025.git
git@gitee.com:rxbook/go-demo-2025.git
rxbook
go-demo-2025
go-demo-2025
master

搜索帮助