Как ограничить concurrent requests?

Middle
257 просмотров
AFK Offer AI

Три основных способа. Buffered channel как семафор: sem := make(chan struct{}, limit). Worker pool: фиксированное число горутин читающих из очереди задач. golang.org/x/sync/semaphore: Weighted semaphore для разного «веса» операций. Для HTTP клиента можно ограничить через Transport.MaxConnsPerHost. Выбор зависит от задачи — для простого лимита buffered channel самый наглядный.

Следующий вопрос

Как работает tcmalloc в Go?