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 |