Sobes.tech
Junior — Middle

Qual é o número máximo de goroutines que podem ser iniciadas simultaneamente numa aplicação?

sobes.tech IA

Resposta da IA

No Go, não há uma restrição rígida ao número máximo de goroutines que podem ser executadas simultaneamente. Teoricamente, podem ser lançadas muitas — dezenas, centenas e até milhões, dependendo dos recursos do sistema (memória, CPU).

As goroutines são muito leves em comparação com os threads do sistema operativo, pois usam uma pilha dinâmica que cresce conforme necessário.

No entanto, a restrição prática depende de:

  • A quantidade de memória disponível (cada goroutine ocupa pelo menos alguns quilobytes).
  • A lógica da aplicação e a sincronização entre goroutines.
  • A carga no agendador do Go.

Exemplo de lançamento de muitas goroutines:

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()
            // trabalho simples
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Todas as goroutines terminaram")
}

Portanto, a limitação é mais prática do que sistemática.