/* Page prose (de) */
"CappingConcurrency" = "# Begrenzen, wie viele gleichzeitig laufen\n\nDas Grundmuster fügt *jede* Aufgabe im Voraus hinzu. Für 8 Einzelbilder ist das in Ordnung. Für 500 hast du das System gerade gebeten, 500 Kinder auf einmal zu starten, von denen jedes vielleicht ein dekodiertes Einzelbild im Speicher hält oder auf dieselbe Festplatte oder denselben Server einhämmert. Das kann den Speicher sprengen, die Festplatte durchschütteln oder dazu führen, dass du in der Rate gedrosselt wirst. Normalerweise willst du eine **Nebenläufigkeitsgrenze**: Halte höchstens `N` Einzelbilder in der Luft und starte das nächste erst, wenn eines fertig wird.\n\nIm klassischen Modell hattest du einen nativen Regler dafür: `maxConcurrentOperationCount` von `OperationQueue` aus dem Kapitel [Operations](Operations.playgroundchapter/Overview), oder ein `DispatchSemaphore` aus dem Kapitel [Gruppen und Semaphoren](Groups%20and%20Semaphores.playgroundchapter/Overview). **Task Groups haben keine solche eingebaute Einstellung**: Es gibt kein `group.maxConcurrency = 4`. Stattdessen drückst du die Grenze aus, indem du steuerst, *wann du `addTask` aufrufst*, und die übliche Redewendung ist diese: **Fülle** die Gruppe zunächst mit `N` Aufgaben und füge dann innerhalb der Sammelschleife jedes Mal, wenn ein Ergebnis herauskommt, eine neue Aufgabe hinzu. Das hält die Anzahl der laufenden Aufgaben bei `N`.";
"CappingConcurrency-2" = "**Sieh es laufen:** Alle 20 Einzelbilder werden immer noch verarbeitet, und das Ergebnis ist dasselbe wie bei der Version, die alles auffächert. Aber zu keinem Zeitpunkt laufen mehr als 4. Bei 20 Einzelbildern in Vierergruppen zu je einer halben Sekunde dauert das Ganze etwa **2,5 Sekunden**, langsamer als alle 20 auf einmal abzufeuern, aber mit einem begrenzten, vorhersehbaren Fußabdruck. Genau dieser Handel, ein wenig Uhrzeit gegen eine harte Grenze für Speicher und Last, ist der Grund, warum du danach greifen würdest. Stimme `maxInFlight` auf die Ressource ab, die du schützt.\n\n* callout(Probier es aus): Setze `maxInFlight` auf `1`; du hast die Gruppe damit direkt wieder in die sequenzielle Version zurückverwandelt, eine nach der anderen.\n\n[Zurück](@previous)  |  Seite 8 von 9  |  [Weiter: Zusammenfassung](@next)";
