Back to questions
Simbirsoft
Junior — Middle
99
Расскажи о самой запоминающейся задаче, связанной с использованием горутин
Companies where asked
Answer from AI
sobes.tech AI
Одна из запоминающихся задач с горутинами была связана с параллельной обработкой большого количества запросов к внешнему API.
Требовалось отправлять сотни запросов одновременно, но при этом контролировать количество одновременно работающих горутин, чтобы не перегрузить систему и не получить отказ от API.
Решение:
- Использовал пул горутин с ограничением по количеству.
- Для этого применял канал-буфер как семафор, который ограничивал число активных горутин.
- Каждая горутина обрабатывала один запрос и по завершении освобождала слот.
Пример кода:
sem := make(chan struct{}, 10) // максимум 10 горутин
for _, req := range requests {
sem <- struct{}{} // захватить слот
go func(r Request) {
defer func() { <-sem }() // освободить слот
processRequest(r)
}(req)
}
// ожидание завершения всех горутин
for i := 0; i < cap(sem); i++ {
sem <- struct{}{}
}
Это позволило эффективно использовать ресурсы и избежать перегрузки.