golang中使用chan控制协程并发简单事例

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)
		}()
	}
}

golang中使用chan控制协程并发简单事例_第1张图片

可以看到,这里每5s会执行一次带有5个并发的打印,所以控制了for循环中协程的并发数量 

你可能感兴趣的:(golang,golang,开发语言,后端)