控制协程(goroutine)的并发数量
ants
https://github.com/panjf2000/ants/blob/master/README_ZH.md
利用 channel 的缓存区
可以利用信道 channel 的缓冲区大小来实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| // main_chan.go
func main() {
var wg sync.WaitGroup
ch := make(chan struct{}, 3)
for i := 0; i < 10; i++ {
ch <- struct{}{}
wg.Add(1)
go func(i int) {
defer wg.Done()
log.Println(i)
time.Sleep(time.Second)
<-ch
}(i)
}
wg.Wait()
}
|
https://geektutu.com/post/hpg-concurrency-control.html