/* Page prose (de) */
"StructuredVsUnstructured" = "# Strukturiert vs. unstrukturiert\n\nSwift Concurrency hat zwei Familien von Tasks, und sie auseinanderzuhalten ist das nützlichste mentale Modell dieses Kapitels.\n\nEine **strukturierte Task** ist ein Kind, dessen Lebensdauer *an einen Gültigkeitsbereich* in deinem Code gebunden ist. Sie wird innerhalb eines Elternteils erstellt, und das Elternteil kann nicht zurückkehren, bevor jedes Kind fertig ist (oder abgebrochen wurde). Strukturierte Tasks bekommst du von **`async let`** (dem du weiter unten begegnest) und von **Task Groups** (ein späteres Kapitel). Der Compiler erzwingt die Verschachtelung, also können Kinder ihr Elternteil nicht überleben: keine Lecks, keine vergessene Arbeit.\n\nEine **unstrukturierte Task** ist eine, die du von Hand mit `Task { }` oder `Task.detached { }` erstellst. Sie ist *nicht* an den umgebenden Gültigkeitsbereich gebunden. Sie läuft weiter, sogar nachdem die Funktion, die sie erstellt hat, zurückgekehrt ist, und **du** bist für sie verantwortlich: ihr Handle festzuhalten, ihren Wert abzuwarten, sie abzubrechen, wenn es angebracht ist.\n\nHier ist die strukturierte Form. `async let` startet sofort eine Kind-Task und bindet ihr eventuelles Ergebnis an einen Namen; du wartest diesen Namen später mit `await` ab.";
"StructuredVsUnstructured-2" = "**Sieh es laufen:** der Tee und die Milch werden *gleichzeitig* zubereitet, nicht eins nach dem anderen. Das Ganze dauert etwa 0,5 s (das längere der beiden), nicht 0,8 s. Es ist garantiert, dass beide Kinder fertig werden, bevor der `Task`-Block endet; das ist die \"an einen Gültigkeitsbereich gebunden\"-Garantie. Würdest du das `await` nie schreiben, würde Swift sie am Ende des Gültigkeitsbereichs trotzdem implizit abwarten; ein strukturiertes Kind wird nie im Stich gelassen.\n\n* callout(Probier es aus): Erhöhe die Verzögerung von `steepTea` auf `.milliseconds(900)`. Kommt das Tablett immer noch in etwa dem *längeren* der beiden Zeiten an, oder in der Summe von beiden?\n\nStelle das der unstrukturierten `Task { }` gegenüber, die du bisher benutzt hast: sie schwebt frei. Diese Freiheit ist manchmal genau der Punkt (zum Beispiel, um Arbeit von einem SwiftUI-Buttondruck aus anzustoßen), aber sie bedeutet, dass das Sicherheitsnetz weg ist. Niemand wartet auf sie, außer du tust es selbst.\n\n[Zurück](@previous)  |  Seite 4 von 11  |  [Weiter: Task.detached](@next)";
