На каждой итерации происходит много логики и локальных запросов, поэтому хочется как то распараллелить
Пример:
list := []int{1, 2, 3, 4, 5}
for _, elem := range list {
go func(e int) {
fmt.Println(e)
}(elem)
}
Желательно ограничивать количество создаваемых рутин. Если там внутри много логики и локальных запросов - там могут и большие объемы временных данных накапливаться. В итоге будут храниться сотни (или тысячи) временных наборов данных, при том, что обрабатываться из них одновременно будут единицы.
Кроме того, если у вас есть запросы к внешним ресурсам, вы можете их случайно забомбить всплеском запросов, который можно было бы и избежать.
вроде 5 тыс горутин норм, больше уже на страх и риск
Обсуждают сегодня