Sobes.tech
Junior — Middle

¿Cuál es la cantidad máxima de goroutines que se pueden ejecutar simultáneamente en una aplicación?

sobes.tech AI

Respuesta de la IA

En Go no hay una restricción estricta en la cantidad máxima de goroutines que se pueden ejecutar simultáneamente. Teóricamente, se pueden lanzar muchas — decenas, cientos e incluso millones, dependiendo de los recursos del sistema (memoria, CPU).

Las goroutines son muy ligeras en comparación con los hilos del sistema operativo, ya que utilizan una pila dinámica que crece según sea necesario.

Sin embargo, la restricción práctica depende de:

  • La cantidad de memoria disponible (cada goroutine ocupa al menos unos pocos kilobytes).
  • La lógica de la aplicación y la sincronización entre goroutines.
  • La carga en el planificador de Go.

Ejemplo de lanzamiento de muchas 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()
            // trabajo simple
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Todas las goroutines han terminado")
}

Por lo tanto, la restricción es más práctica que del sistema.