async let y TaskGroup en Swift: paralelismo real con structured concurrency

Si alguna tarea del grupo lanza un error, el grupo cancela las restantes. También puedes comprobar Task.isCancelled dentro de una tarea larga y salir ordenadamente:

group.addTask {
    for i in 0...1000 {
        if Task.isCancelled { break }
        procesarElemento(i)
    }
}

El error más frecuente: mutar estado compartido

// MAL: condicion de carrera
var total = 0
await withTaskGroup(of: Int.self) { g in
    g.addTask { 1 }
    g.addTask { 2 }
    for await n in g { total += n }  // peligroso si total es global
}

// BIEN: recoger en el cuerpo del for-await
var acumulado = 0
for await n in grupo { acumulado += n }

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP