Sobes.tech
Senior

¿Decidiste escribir WaitGroup porque apareció un canal o porque decidiste escribir goroutines para algo?

sobes.tech AI

Respuesta de la IA

WaitGroup en Go se utiliza para esperar a que un grupo de goroutines finalice.

Si tienes varias goroutines que realizan tareas en paralelo y necesitas esperar a que terminen antes de continuar, WaitGroup es una herramienta conveniente.

Los canales y las goroutines son mecanismos diferentes. Un canal se usa para comunicación y sincronización entre goroutines, mientras que WaitGroup se usa para esperar a que terminen.

Por ejemplo, si tienes goroutines para realizar tareas y quieres esperar a que todas terminen, usas WaitGroup:

var wg sync.WaitGroup
wg.Add(3) // esperamos 3 goroutines

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        // trabajo de la goroutine
        fmt.Println("Goroutine", id, "terminada")
    }(i)
}

wg.Wait() // esperamos a que terminen todas las goroutines

De esta manera, WaitGroup se usa precisamente porque hay goroutines que necesitan sincronización en su finalización, no por la existencia de canales.