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 }
