func main() {
    var wg sync.WaitGroup

    sem := make(chan struct{}, 2) // 最多允许2个并发同时执行
    taskNum := 10

    for i := 0; i < taskNum; i++ {
        wg.Add(1)

        go func(id int) {
            defer wg.Done()

            sem <- struct{}{}        // 获取信号
            defer func() { <-sem }() // 释放信号

            // do something for task
            time.Sleep(time.Second * 2)
            fmt.Println(id, time.Now())
        }(i)
    }
    wg.Wait()
}

相关文章:

  • 2021-11-11
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2021-12-01
  • 2021-11-21
  • 2021-11-18
  • 2021-08-24
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-04
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-08-19
相关资源
相似解决方案