Middle+
Cuéntame más sobre WaitGroup: cómo funciona, qué hacen Add, Done, Wait?
sobes.tech AI
Respuesta de la IA
WaitGroup en Go se utiliza para esperar a que un grupo de goroutines finalice.
- Add(n int) — aumenta el contador en n, generalmente llamado antes de lanzar goroutines.
- Done() — disminuye el contador en 1, llamado dentro de la goroutine después de completar su trabajo.
- Wait() — bloquea la ejecución hasta que el contador llegue a cero, es decir, hasta que todas las goroutines llamen a Done.
Ejemplo:
var wg sync.WaitGroup
wg.Add(3) // esperamos 3 goroutines
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
fmt.Println("Goroutine", id, "completada")
}(i)
}
wg.Wait() // esperamos a que todas las goroutines terminen
fmt.Println("Todas las goroutines han finalizado")
De esta forma, WaitGroup ayuda a sincronizar tareas paralelas y esperar a que terminen.