Junior — Middle
¿Ha utilizado el mecanismo de sincronización con sync.WaitGroup en sus proyectos?
sobes.tech AI
Respuesta de la IA
Sí, en proyectos en Go a menudo se utiliza sync.WaitGroup para sincronizar goroutines. Este mecanismo permite esperar a que un grupo de tareas paralelas finalice antes de continuar.
Principio de funcionamiento:
- Se crea un objeto
WaitGroup. - Antes de iniciar cada goroutine, se llama a
Add(1)para incrementar el contador. - Dentro de la goroutine, tras completar su trabajo, se llama a
Done(), reduciendo el contador. - La goroutine principal llama a
Wait(), que se bloquea hasta que el contador llegue a cero.
Ejemplo:
var wg sync.WaitGroup
wg.Add(2) // esperamos 2 goroutines
go func() {
defer wg.Done()
// trabajo de la primera goroutine
}()
go func() {
defer wg.Done()
// trabajo de la segunda goroutine
}()
wg.Wait() // esperamos a que ambas terminen
Esto es útil para coordinar operaciones paralelas y evitar que el programa termine prematuramente.