Back to questions
Junior — Middle
83
Какое максимальное количество горутин можно запустить одновременно в приложении?
Answer from AI
sobes.tech AI
В Go нет жесткого ограничения на максимальное количество одновременно запущенных горутин. Теоретически их можно запускать очень много — десятки и сотни тысяч, а иногда и миллионы, в зависимости от ресурсов системы (память, CPU).
Горутины очень легковесны по сравнению с потоками ОС, так как используют динамический стек, который растет по мере необходимости.
Однако практическое ограничение зависит от:
- Объема доступной памяти (каждая горутина занимает минимум несколько килобайт).
- Логики приложения и синхронизации между горутинами.
- Нагрузки на планировщик Go.
Пример запуска большого количества горутин:
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
const n = 100000
wg.Add(n)
for i := 0; i < n; i++ {
go func(i int) {
defer wg.Done()
// простая работа
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Все горутины завершены")
}
Таким образом, ограничение скорее практическое, чем системное.