golang中使用chan控制协程并发简单事例
func main() {processNum := 5ch := 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循环中协程的并发数量