Junior — Middle
¿Cómo se puede garantizar la finalización de todas las goroutines en ejecución en un programa?
sobes.tech AI
Respuesta de la IA
En Go no hay una forma incorporada de terminar forzosamente una goroutine desde fuera. Para garantizar que se espere a que terminen todas las goroutines en ejecución, generalmente se utiliza sincronización con sync.WaitGroup.
Principio de funcionamiento:
- Antes de iniciar cada goroutine, se llama a
wg.Add(1). - Dentro de la goroutine, al final, se llama a
wg.Done(). - En la función principal, se llama a
wg.Wait(), que bloquea la ejecución hasta que el contador llegue a cero.
Ejemplo:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// trabajo de la goroutine
}()
wg.Wait() // esperar a que terminen todas las goroutines
De esta manera, el programa garantiza que esperará a que terminen todas las goroutines antes de continuar o finalizar.