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.