package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
sem := make(chan struct{}, 5) // 最多允许5个并发同时执行
taskNum := 10
for i := 0; i < taskNum; i++ {
wg.Add(1)
go func(id int) {
defer wg.Done()
sem <- struct{}{} // 获取信号
defer func() { <-sem }() // 释放信号
// do something for task
}(i)
}
wg.Wait()
}
WaitGroup + Channel 并发执行子任务且限制并发度
最新推荐文章于 2024-10-16 14:43:50 发布
关键词由CSDN通过智能技术生成