Go语言控制并发数量的方法有以下几种:
ch := make(chan struct{}, maxConcurrency)
for i := 0; i < totalTasks; i++ {
ch <- struct{}{} // 占用一个channel的缓冲区
go func() {
defer func() { <-ch }() // 释放一个channel的缓冲区
// 执行并发任务
}()
}
var wg sync.WaitGroup
for i := 0; i < totalTasks; i++ {
wg.Add(1)
go func() {
defer wg.Done()
// 执行并发任务
}()
}
wg.Wait()
pool := make(chan struct{}, maxGoroutines)
for i := 0; i < maxGoroutines; i++ {
pool <- struct{}{} // 占用一个goroutine
go func() {
defer func() { <-pool }() // 释放一个goroutine
// 执行并发任务
}()
}
以上方法都可以用来控制并发数量,根据实际场景选择合适的方法。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:golang控制并发数量的方法是什么