Sobes.tech
Junior — Middle

¿Qué funciones proporciona la estructura WaitGroup en el lenguaje Go para la sincronización de goroutines?

sobes.tech AI

Respuesta de la IA

En el lenguaje Go, la estructura sync.WaitGroup se utiliza para sincronizar varias goroutines, permitiendo que la goroutine principal espere a que otras terminen.

Métodos principales de WaitGroup:

  • Add(delta int) — aumenta o disminuye el contador de goroutines esperadas. Generalmente se llama antes de lanzar las goroutines.

  • Done() — disminuye el contador en 1, se llama al final del trabajo de la goroutine.

  • Wait() — bloquea la ejecución hasta que el contador llegue a cero.

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ñalizamos la finalización
        fmt.Println("Goroutine", id)
    }(i)
}

wg.Wait() // esperamos a que terminen todas las goroutines
fmt.Println("Todas las goroutines han terminado")

De esta forma, WaitGroup ayuda a coordinar la ejecución paralela y garantiza que el programa no termine antes de tiempo.