typestar

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

  1. go func() lanza una goroutine.
  2. wg.Add/wg.Done llevan la cuenta del trabajo pendiente.
  3. wg.Wait bloquea hasta que cada goroutine termina.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Goroutines; paso 1 de 25 en Concurrencia.

Siguiente →