Sobes.tech
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("Все горутины завершены")
}

Таким образом, ограничение скорее практическое, чем системное.