func main() {
processNum := 5
ch := make(chan struct{}, processNum)
for true {
ch <- struct{}{}
go func() {
defer func() {
<-ch
}()
fmt.Println("我是协程", time.Now().UnixNano())
time.Sleep(time.Second * 5)
}()
}
}
可以看到,这里每5s会执行一次带有5个并发的打印,所以控制了for循环中协程的并发数量