仅仅限制并发数 var limit = make(chan int, 300) func main() { // ………… for _, w := range work { go func() { limit <- 1 w() <-limit }() } // ………… } 控制单位时间内并发数 可以通过使用 time.Tick 和 sync.WaitGroup 来控制每秒请求并发数。 具体实现方法如下: const maxQPS = 100 // 每秒最大请求数 func main() { qpsInterval := time.Second / time.Duration(maxQPS) // 每个请求的时间间隔 var wg sync.WaitGroup ticker := time.Tick(qpsInterval) for i := 0; i < 1000; i++ { wg.Add(1) <-ticker // 等待下一个请求时间……

阅读全文