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.