Sobes.tech
Junior — Middle

¿Cuál es la cantidad máxima de goroutines que se pueden ejecutar simultáneamente sin problemas sustanciales para el sistema?

sobes.tech AI

Respuesta de la IA

En Go, la cantidad máxima de goroutines que se pueden ejecutar simultáneamente depende de los recursos del sistema (memoria RAM, tiempo de CPU) y de la naturaleza de las tareas que realizan. Teóricamente, se pueden lanzar cientos de miles e incluso millones de goroutines, ya que son muy ligeras en comparación con los hilos del sistema operativo.

Sin embargo, en la práctica:

  • Si las goroutines usan activamente la CPU, un número demasiado alto puede reducir el rendimiento debido a la conmutación de contexto.
  • Si las goroutines se bloquean en operaciones de entrada/salida o esperan eventos, puede haber muchas más sin problemas sustanciales.

Normalmente, en aplicaciones reales, se lanzan desde unos pocos cientos hasta unos pocos miles de goroutines sin problemas. Si es necesario escalar, se recomienda hacer perfiles de la aplicación y monitorear el consumo de memoria y la carga de CPU.

Ejemplo de creación de muchas goroutines:

for i := 0; i < 100000; i++ {
    go func(n int) {
        // algún trabajo
        fmt.Println(n)
    }(i)
}