Goroutines y WaitGroup en Go
Lanzar trabajo concurrente y esperar a que termine.
func fanOut(jobs []string) {
var wg sync.WaitGroup
for _, job := range jobs {
wg.Add(1)
go func(name string) {
defer wg.Done()
fmt.Println("working on", name)
}(job)
}
wg.Wait()
}
Cómo funciona
go func()lanza una goroutine.wg.Add/wg.Donellevan la cuenta del trabajo pendiente.wg.Waitbloquea hasta que cada goroutine termina.
Palabras clave y builtins usados aquí
deferforfuncgorangestringvar
El intento, en números
- Líneas
- 11
- Caracteres a escribir
- 179
- Tokens
- 60
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 38 segundos.
Paso 1 de 3 en Goroutines; paso 1 de 25 en Concurrencia.