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.