Sobes.tech
Junior

¿Qué son las goroutines?

sobes.tech AI

Respuesta de la IA

Hilos ligeros de ejecución, gestionados por el entorno de ejecución de Go. Se crean con la palabra clave go antes de llamar a una función.

Características principales:

  • Menor consumo de memoria: La goroutine comienza con un tamaño de pila pequeño (normalmente 2 KB), que puede aumentar o disminuir dinámicamente.
  • Creación más rápida: Crear una goroutine es mucho más rápido que crear un hilo del sistema.
  • Multiplexación en hilos del sistema: Muchas goroutines pueden ser multiplexadas en menos hilos del sistema por el planificador de Go.
  • Planificación cooperativa: Las goroutines no son preemptivamente interrumpidas; ceden voluntariamente el control al planificador (por ejemplo, en llamadas bloqueantes o llamadas explícitas a runtime.Gosched()).

Ejemplo de creación:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("¡Hola desde la goroutine!")
}

func main() {
	go sayHello() // Ejecuta sayHello como una goroutine
	fmt.Println("¡Hola desde la función principal!")
	time.Sleep(1 * time.Second) // Para que la función principal no termine antes que la goroutine
}

Comparación con hilos:

Característica Goroutines de Go Hilos del SO
Gestión Entorno de ejecución de Go Sistema operativo
Consumo de memoria Bajo, pila dinámica Alto, pila fija
Creación Rápida Lenta
Planificación Cooperativa Preemptiva
Sincronización Canales, paquete sync Mutexes, semáforos del SO