/* Page prose (de) */
"BlockingWithSync" = "# `sync`: blockiere, bis es fertig ist\n\nDas Gegenteil von `async` ist **`sync`**. Es übermittelt die Closure und **blockiert dann den aufrufenden Thread**, bis diese Closure fertig ist. Die Kontrolle kommt nicht zu dir zurück, bis die Arbeit erledigt ist.";
"BlockingWithSync-2" = "**Sieh es laufen:** Diesmal bekommst du ein sauberes `1️⃣ 2️⃣ 3️⃣`. Der `sync`-Aufruf parkte den Hauptthread, bis der Block fertig war, sodass `3️⃣` nicht drucken konnte, bevor `2️⃣` es tat. Beachte, dass du hier nichts gewonnen hast: Du hast Arbeit auf eine Hintergrund-Warteschlange verschoben, aber dann auf dem Hauptthread *darauf gewartet*. Der Hauptthread war die ganze Zeit ohnehin blockiert.\n\nDas ist die zentrale Lektion: **`sync` abseits des Hauptthreads bringt dir selten etwas**, denn der Sinn, Arbeit vom Hauptthread wegzubewegen, ist, *nicht* darauf zu warten. Fast immer willst du `async`.\n\n`sync` hat enge, gezielte Einsatzzwecke (etwa das kurze Lesen eines Werts aus einer seriellen Warteschlange, die geteilten Zustand schützt); danach zu greifen, um \"Hintergrundarbeit auszuführen\", ist meist ein Fehler.\n\n* callout(Gefahr): Rufe niemals `DispatchQueue.main.sync { }` vom Hauptthread aus auf. Der Hauptthread würde blockieren und auf die main-Warteschlange warten, die den Block nicht ausführen kann, bis der Hauptthread frei ist. Er wartet für immer auf sich selbst. Das ist ein **Deadlock**, und er friert deine App hart ein. Führe das nicht aus; wisse nur, dass es existiert. Deadlocks bekommen im Kapitel [Gefahren der Nebenläufigkeit](Concurrency%20Hazards.playgroundchapter/Overview) eine ordentliche Behandlung.\n\n[Zurück](@previous)  |  Seite 4 von 9  |  [Weiter: Seriell vs. nebenläufig: Reihenfolge und Überlappung](@next)";
