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.