限制协程执行数量的基本方法


func job(i int) {
    fmt.Println(i)
    time.Sleep(time.Second)
}

func main() {
    maxNum := 10

    pool := make(chan struct{}, maxNum) // 协程池

    wg := sync.WaitGroup{}
    for i := 0; i < 100; i++ {
        pool <- struct{}{}
        wg.Add(1)
        go func(i int) {
            defer wg.Done()
            defer func() {
                <-pool
            }()

            job(i)
        }(i)
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容