/* Page prose (de) */
"ClassicVsModernWrappingUp" = "# Zusammenfassung\n\nDu hast nun eine alltägliche Aufgabe (zwei Dinge holen, sie kombinieren, Fehler\nbehandeln, auf dem Hauptthread liefern) auf beide Arten gelöst gesehen, und die\nmoderne Version gewinnt bei Lesbarkeit, Sicherheit und schierer Zeilenzahl. Die\nehrliche Erkenntnis ist aber nicht \"schreib alles neu\"; es ist, zu wissen, was\nworauf abbildet und wo Migration sich tatsächlich auszahlt. Die Zusammenfassung\nunten ist eine Karte für beides.\n\n* Das moderne Modell gewinnt bei derselben Aufgabe: kein gemeinsam genutzter\nveränderlicher Zustand, kein `enter`/`leave`, ein Fehlerpfad und ein\nautomatischer Hauptthread-Sprung via `@MainActor`.\n* Jedes klassische Werkzeug hat ein modernes Gegenstück:\n  * Completion Handler ➡️ `async`-Funktion\n  * `DispatchGroup`/Semaphor ➡️ `async let`/`TaskGroup`\n  * serielle-Warteschlangen-Schutz ➡️ **Actor**\n  * `DispatchQueue.main` ➡️ **`@MainActor`**\n  * manueller `Operation`-Abbruch ➡️ kooperativer `Task`-Abbruch\n  * Delegate/Callback ➡️ `AsyncStream`/Continuation\n* **Klassisch verdient sich noch seinen Platz** für ältere APIs, feingranulare\nDispatch-Kontrolle, OS-Ziele vor `async`/`await` und Code, der schon\nfunktioniert: eine Neuschreibung ist ein Kostenpunkt, also ist die Falle, ihn\ndort auszugeben, wo es keinen Gewinn gibt.\n* **Migriere an den Nähten:** umhülle Legacy-Callbacks mit Continuations,\nschreibe neuen Code modern, ersetze Ad-hoc-Locks durch Actors, übernimm\n`@MainActor` für die UI und schalte die Data-Race-Prüfung von Swift 6\nschrittweise ein.\n* **Überbrücke die Grenze sorgfältig:** eine Continuation setzt **genau einmal**\nfort, also braucht ein Callback, das viele Male feuert, einen `AsyncStream`. Und\nblockiere niemals mit `DispatchGroup.wait()`/`semaphore.wait()` innerhalb einer\n`Task`: überbrücke stattdessen mit einer Continuation und `await`e sie.\n* **`@MainActor` verschiebt deine langsame Arbeit nicht**: es garantiert, dass\nder annotierte Code auf dem Hauptthread läuft. Erledige schwere Arbeit in einer\nschlichten asynchronen Funktion abseits des Hauptthreads und beschränke den\n`@MainActor`-Teil auf das kleine UI-Update am Ende.\n* Die beiden Modelle **interoperieren**: gemischter Code ist während einer\nMigration normal und zu erwarten.\n\n---\n\n## Wohin als Nächstes\n\nDas ist das ganze Buch: von einem einzelnen blockierten Barista auf dem\nHauptthread bis zu Actors, die gemeinsam genutzten Zustand innerhalb eines\neinzelnen Prozesses sicher halten. Du hast das klassische Modell (GCD und\nOperations) und das moderne (`async`/`await`, strukturierte Nebenläufigkeit,\n`AsyncSequence` und Actors) kennengelernt, und du hast gesehen, *warum* das\nzweite als Antwort auf das erste existiert.\n\nDie Konzepte setzen sich erst wirklich, sobald du sie an etwas verwendest, das\ndir wichtig ist. Also hier die Ermutigung zum Abschluss: **öffne eines deiner\neigenen Projekte und besuche die modernen Kapitel erneut.** Finde einen\nCompletion Handler und verwandle ihn in `async`/`await`. Finde einen gemeinsam\ngenutzten veränderlichen Wert, der durch ein Lock geschützt ist, und mach ihn zu\neinem `actor`. Finde einen Bildschirm, der ruckelt, und verlagere seine schwere\nArbeit vom Hauptthread weg. Jede kleine Änderung wird ein Kapitel für immer an\nseinen Platz rücken lassen.\n\nNebenläufigkeit hört in dem Moment auf, beängstigend zu sein, in dem du sie\nabsichtlich zum Laufen gebracht hast, in Code, der dir gehört. Geh und tu das.\nDu bist bereit.\n\n---\n\n## Bonustrack: Actors über Maschinen hinweg\n\nNeugierig, wie weit sich die Actor-Idee dehnt? Es gibt ein Kapitel mehr nach\ndiesem, **[Verteilte Actors](Distributed%20Actors.playgroundchapter/Overview)**,\nals Zusatzpunkte. Es trägt dasselbe `await`-zum-Aufrufen-Gefühl hinaus zu\nObjekten, die in *anderen Prozessen, sogar auf anderen Maschinen* leben. Es ist\neher eine begleitend zu lesende Konzepttour als ein ausführbares Labor, also\nbehandle es als einen Ausblick für den Moment, wenn sich die Kernideen solide\nanfühlen.\n\n[Zurück](@previous)  |  Seite 8 von 8";
