/* Page prose (de) */
"Overview" = "# Task Groups\n\nAngenommen, du baust ein Astronomie-Werkzeug, das Fotos stapelt. Um aus einem schwachen Fleck eine gestochen scharfe Galaxie zu machen, nimmst du denselben Himmelsausschnitt viele Male auf und **stapelst** die Einzelbilder: Du kombinierst Dutzende oder Hunderte von Belichtungen zu einem einzigen sauberen Bild. Jedes Einzelbild muss geladen und kalibriert werden, bevor es sich dem Stapel anschließt, und diese Aufgaben hängen nicht voneinander ab, also würdest du sie am liebsten alle auf einmal ausführen. Aber du kennst die Anzahl nicht im Voraus: Heute Nacht sind es 8 Einzelbilder, morgen 200. Im Kapitel [Grundlagen von Async/Await](Async%20Await%20Basics.playgroundchapter/Overview) hast du `async let` kennengelernt, um eine *feste, bekannte* Handvoll Aufgaben parallel auszuführen. Dieses Kapitel ist das Werkzeug für eine *dynamische* Anzahl: die **Task Group**.\n\n---\n\n## Was du lernst\n\n* Warum `async let` an seine Grenzen stößt, wenn die Anzahl der parallelen Aufgaben nicht fest ist.\n* Wie du `N` nebenläufige Kind-Tasks mit `withTaskGroup` auffächerst und ihre Ergebnisse einsammelst.\n* Warum die Ergebnisse in der **Reihenfolge des Abschlusses** eintreffen, und wie du sie wieder in Ordnung bringst.\n* Wie `withThrowingTaskGroup` einen Fehler behandelt: Es bricht den Rest ab und wirft weiter.\n* Die **strukturierte Garantie** (die Gruppe lässt nie eine Aufgabe entwischen) und wie der Abbruch zu den Kindern hinabfließt.\n* Ein Muster, um zu **begrenzen**, wie viele Kind-Tasks gleichzeitig laufen, und warum du das willst.\n\nWenn du bereit bist, blättere um, und wir sehen genau, wo `async let` an seine Grenzen stößt.\n\nSeite 1 von 9  |  [Weiter: Wo Async Let an seine Grenzen stößt](@next)";
