Sobes.tech
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.