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