Sobes.tech
Junior

¿Cómo en el lenguaje de programación (Go) detectar que todos los hilos en ejecución han terminado y el hilo principal puede usar los resultados?

sobes.tech AI

Respuesta de la IA

En Go, para rastrear la finalización de todas las goroutines en ejecución, generalmente se utiliza el tipo sync.WaitGroup. Permite que el hilo principal espere hasta que todas las goroutines terminen su ejecución.

Ejemplo de uso:

var wg sync.WaitGroup

wg.Add(3) // esperamos 3 goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // señalamos la finalización de la goroutine
        // trabajo de la goroutine
        fmt.Println("Goroutine", id, "finalizada")
    }(i)
}

wg.Wait() // el hilo principal se bloquea hasta que el contador de wg llegue a 0
fmt.Println("Todas las goroutines han finalizado, se pueden usar los resultados")

De esta forma, WaitGroup permite sincronizar la ejecución y garantizar que el hilo controlador espere a que todas las tareas paralelas finalicen.