/* Page prose (fr) */
"Overview" = "# Task Groups\n\nImaginons que tu construis un outil d'astronomie qui empile des photos. Pour transformer une tache floue en une galaxie nette, tu captures le même bout de ciel de nombreuses fois et tu **empiles** les images: tu combines des dizaines ou des centaines d'expositions en une seule image propre. Chaque image doit être chargée et calibrée avant de rejoindre la pile, et ces travaux ne dépendent pas les uns des autres, donc tu adorerais tous les exécuter à la fois. Mais tu ne connais pas le nombre à l'avance: ce soir c'est 8 images, demain c'est 200. Dans le chapitre [Les bases d'async/await](Async%20Await%20Basics.playgroundchapter/Overview) tu as rencontré `async let` pour exécuter en parallèle une poignée *fixe et connue* de travaux. Ce chapitre est l'outil pour un nombre *dynamique*: le **task group**.\n\n---\n\n## Ce que tu vas apprendre\n\n* Pourquoi `async let` atteint ses limites quand le nombre de travaux parallèles n'est pas fixe.\n* Comment déployer en éventail `N` tâches enfants concurrentes avec `withTaskGroup` et récolter leurs résultats.\n* Pourquoi les résultats arrivent dans l'**ordre d'achèvement**, et comment les remettre dans l'ordre.\n* Comment `withThrowingTaskGroup` gère une erreur: il annule le reste et relève à nouveau.\n* La **garantie structurée** (le groupe ne laisse jamais fuir une tâche) et comment l'annulation se propage vers les enfants.\n* Un motif pour **plafonner** combien de tâches enfants s'exécutent à la fois, et pourquoi tu voudrais le faire.\n\nQuand tu es prêt, tourne la page et nous verrons exactement où `async let` atteint ses limites.\n\npage 1 sur 9  |  [Suivant: Où async let atteint ses limites](@next)";
