¿Qué es una gorutina? ¿En qué se diferencia de un hilo del sistema? Explica el planificador de Go (GMP).
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 un hilo del sistema, las goroutines tienen un tamaño de pila mucho menor (comienza en unos pocos kilobytes y puede crecer dinámicamente), lo que permite ejecutar miles e incluso millones de goroutines simultáneamente con bajos costos.
Los hilos del sistema son creados y planificados por el sistema operativo, tienen una pila fija grande y operaciones de cambio de contexto más costosas.
El planificador de Go se basa en el modelo GMP:
- G (goroutine) — la propia goroutine, unidad de ejecución.
- M (máquina) — hilo del sistema (hilo del SO) en el que se ejecutan las goroutines.
- P (procesador) — procesador lógico, recurso necesario para ejecutar una goroutine en M.
P gestiona la cola de goroutines listas para ejecutar (G). M puede ejecutar solo una goroutine a la vez, pero gracias a la existencia de múltiples M y P, el planificador distribuye eficientemente las goroutines entre los hilos del sistema, asegurando concurrencia y paralelismo.
Este enfoque permite a Go usar eficientemente los recursos del sistema y escalar en sistemas multiprocesador.