/* Page prose (de) */
"DispatchGroupFinishLine" = "# `DispatchGroup`: eine Ziellinie für viele Aufgaben\n\nEine **`DispatchGroup`** ist ein Zähler, der eine Menge von Aufgaben verfolgt, damit du benachrichtigt werden kannst, wenn die ganze Menge fertig ist. Du markierst mit `enter()`, dass eine Aufgabe der Gruppe beitritt, und mit `leave()`, dass sie fertig ist. Wenn die Anzahl der `leave()`-Aufrufe die Anzahl der `enter()`-Aufrufe einholt (die Gruppe ist **leer**), löst die Gruppe aus.";
"DispatchGroupFinishLine-2" = "`notify(queue:)` ist die entscheidende Zeile: Sie registriert einen Block, der **später** ausgeführt wird, auf der Warteschlange, die du angibst, in dem Moment, in dem die Gruppe leer wird. Sie blockiert **nicht**. Dein Code fließt einfach daran vorbei weiter.\n\n**Sieh es laufen:** Zwei Dinge fallen auf. Erstens wird `📤 Batch sent...` vor jedem Getränk ausgegeben; `notify` hat nicht blockiert. Zweitens erscheinen die Getränke in **Fertigstellungsreihenfolge** (Cold Brew, dann Espresso, dann Latte), *nicht* in der Reihenfolge, in der du sie gestartet hast, genau die Lektion aus einem früheren Kapitel. Aber die Tablett-Zeile kommt immer **zuletzt**, nach allen dreien, weil die Gruppe auf jedes `leave()` gewartet hat. Das ist der ganze Sinn: Du bekommst einen einzigen, sauberen \"Alles fertig\"-Callback, egal in welcher Reihenfolge die Aufgaben fertig werden.\n\n* callout(Probier es aus): Tausche die Brühzeiten, sodass Latte `0.1` und Cold Brew `0.9` ist. Die Getränke ordnen sich um, aber landet die Tablett-Zeile immer noch zuletzt?\n\n> Wenn die Arbeit eine einfache `async`-Closure ist, kannst du das manuelle Paar überspringen und die Warteschlange es für dich ausgleichen lassen: `barista.async(group: group) { ... }`. Es ist eine **Abkürzung**, die vor deinem Block `enter()` und danach `leave()` aufruft. Verwende das manuelle `enter()`/`leave()`, wenn der \"Fertig\"-Moment ein *Callback* ist, der später ausgelöst wird (wie ein Netzwerk-Completion-Handler), wo es keine einzelne Closure gibt, deren Ende \"fertig\" bedeutet.\n\n[Zurück](@previous)  |  Seite 3 von 8  |  [Weiter: wait(): die blockierende Alternative](@next)";
