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