Sobes.tech
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
}