Sobes.tech
Junior — Middle

Explique por qué no se puede hacer una correspondencia directa entre el número de hilos y la cantidad de goroutines en Go.

sobes.tech AI

Respuesta de la IA

En Go, la cantidad de goroutines no corresponde a la cantidad de hilos del sistema operativo, porque las goroutines son hilos ligeros gestionados por el runtime de Go, no por el SO.

Razones principales:

  • Multiplexación: El runtime de Go distribuye muchas goroutines en un número limitado de hilos del sistema, cambiando entre ellos de manera eficiente.
  • Ligereza: Crear una goroutine requiere mucho menos recursos que crear un hilo del sistema.
  • Planificador de Go: Gestiona la ejecución de las goroutines, permitiendo que miles de ellas trabajen en varios hilos.

Por esto, no se puede mapear directamente el número de goroutines al número de hilos — generalmente, a un hilo le corresponden muchas goroutines, lo que permite usar los recursos de manera eficiente y simplifica la programación concurrente.

Ejemplo:

runtime.GOMAXPROCS(4) // Establece el número de hilos del SO

for i := 0; i < 1000; i++ {
    go func(id int) {
        fmt.Println("Goroutine", id)
    }(i)
}

Aquí, 1000 goroutines trabajarán en 4 hilos del SO.