Sobes.tech
Junior — Middle

¿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.