Middle+
¿Qué es una goroutine? ¿En qué se diferencia de un hilo del sistema operativo? ¿Quién controla las goroutines?
sobes.tech AI
Respuesta de la IA
Goroutine es un hilo ligero de ejecución en el lenguaje Go, gestionado por el runtime de Go y no por el sistema operativo. A diferencia de los hilos del SO, las goroutines ocupan mucho menos memoria (generalmente unos pocos kilobytes de pila, que pueden crecer y disminuir dinámicamente), y su creación y cambio de contexto son mucho más baratos en recursos.
Las principales diferencias con los hilos del SO:
- Las goroutines son planificadas y gestionadas por el runtime de Go, no por el SO.
- Puede haber miles o decenas de miles de goroutines en un solo proceso sin una carga significativa.
- El cambio de contexto entre goroutines es más rápido, ya que no requiere cambiar de núcleo.
El manejo de las goroutines es realizado por el runtime de Go, que contiene un planificador propio (M:N scheduler), que asigna muchas goroutines (G) a un menor número de hilos del SO (M). Esto permite un uso eficiente de los recursos del sistema y simplifica la programación paralela.