¿Cómo se garantiza el trabajo y la sincronización de los hilos de ejecución en Golang?
sobes.tech AI
Respuesta de la IA
En Go, para trabajar con hilos de ejecución se utilizan las goroutines, que son hilos ligeros gestionados por el runtime de Go. Las goroutines se inician con la palabra clave go antes de llamar a una función, lo que permite ejecutarla de forma asíncrona.
Para sincronizar las goroutines, en Go se emplean canales y primitivas del paquete sync (por ejemplo, Mutex, WaitGroup). Los canales proporcionan un intercambio seguro de datos entre goroutines y permiten sincronizarlas.
Ejemplo de uso de goroutines y canales:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "listo"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println("Trabajo de la goroutine:", msg)
}
Aquí, la goroutine principal inicia worker en una goroutine separada, que después de una demora envía un mensaje a través del canal. La goroutine principal espera recibir el mensaje del canal, lo que asegura la sincronización.