Sobes.tech
Back to questions
Junior — Middle
99

Расскажи о самой запоминающейся задаче, связанной с использованием горутин

Companies where asked
SimbirsoftSimbirsoft

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{}{}
}

Это позволило эффективно использовать ресурсы и избежать перегрузки.