Junior — Middle
¿Cómo se puede determinar que todas las goroutines hijas han terminado su ejecución en un programa en Go?
sobes.tech AI
Respuesta de la IA
En Go, para determinar la finalización de todas las goroutines hijas, generalmente se utiliza la sincronización con el tipo sync.WaitGroup.
Ejemplo:
var wg sync.WaitGroup
wg.Add(3) // esperamos 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // señalizamos la finalización
// trabajo de la goroutine
fmt.Println("Goroutine", id, "finalizada")
}(i)
}
wg.Wait() // bloqueamos hasta que todas las goroutines llamen a Done
fmt.Println("Todas las goroutines han finalizado")
De esta manera, WaitGroup permite que la goroutine principal espere a que todas las hijas finalicen.