Senior
Τι είναι μια goroutine; Πώς είναι δομημένη;
sobes.tech AI
Απάντηση από AI
Una goroutine es un hilo de ejecución ligero en el lenguaje Go. A diferencia de los hilos del sistema, las goroutines son gestionadas por el runtime de Go y tienen una pila muy pequeña (comienza con unos pocos kilobytes y puede crecer dinámicamente). Esto permite ejecutar cientos de miles de goroutines simultáneamente con bajos costos de sobrecarga.
Estructura de una goroutine:
- Al crear una goroutine (con el operador
go), el planificador de Go la coloca en la cola de tareas listas para ejecutar. - El runtime de Go utiliza una planificación M:N: M hilos del sistema (hilos OS) atienden N goroutines.
- Las goroutines cambian de contexto a nivel de runtime, lo cual es más rápido que cambiar entre hilos del sistema.
- Cada hilo (M) puede ejecutar varias goroutines (N), alternando entre ellas en bloqueos o según sea necesario.
Ejemplo de creación de una goroutine:
func sayHello() {
fmt.Println("Hola desde la goroutine")
}
func main() {
go sayHello() // lanzamos la goroutine
time.Sleep(time.Second) // esperamos para que la goroutine tenga tiempo de ejecutarse
}