/* Page prose (de) */
"DataRace" = "# Der Fehler: ein Data Race\n\nEin **Data Race** ist, wenn zwei Threads gleichzeitig auf dieselbe Stelle im Speicher zugreifen und mindestens einer von ihnen schreibt. Eine **Race Condition** ist die breitere Familie: jeder Fehler, dessen Ausgang vom unvorhersehbaren *Timing* nebenläufiger Arbeit abhängt. Jeder Data Race ist eine Race Condition; nicht jede Race Condition betrifft direkt den Speicher. In diesem Kapitel reisen die beiden gemeinsam.\n\nHier ist die Bank. Ein Konto, ein Kontostand. Tausend Kassierer verbuchen jeweils eine einzelne Einzahlung von `1`. Der Kontostand sollte am Ende genau bei `1000` liegen.";
"DataRace-2" = "**Sieh es laufen:** Führe den Code ein paar Mal aus. Du wirst so etwas sehen wie `Final balance: 647 (expected 1000)`. Führe erneut aus: `581`. Wieder: `621`. Wieder: `658`. **Die Zahl ändert sich bei jedem Lauf, und sie ist meistens falsch.** Keine Zeile dieses Codes ist falsch geschrieben. Die Logik (lesen, eins addieren, zurückschreiben) ist für *einen* Kassierer genau richtig. Sie fällt auseinander, weil tausend von ihnen es gleichzeitig tun.\n\nVerfolge, wie zwei Kassierer kollidieren:\n\n1. Kassierer A liest `balance` → `500`.\n2. Kassierer B liest `balance` → `500` (A hat noch nicht zurückgeschrieben).\n3. Kassierer A schreibt `501`.\n4. Kassierer B schreibt `501`.\n\nEs fanden zwei Einzahlungen statt. Der Kontostand stieg um *eins*. Der Dollar von Kassierer B ist verschwunden, ein **verlorenes Update**. Das ist der ganze Fehler: `balance += 1` sieht atomar aus, aber es ist ein Lesen, dann ein Schreiben, mit einer Lücke dazwischen. In einer nebenläufigen Warteschlange kann ein anderer Kassierer sich in diese Lücke schleichen. (Es oben in drei explizite Zeilen aufzuteilen, verbreitert nur die Lücke, damit du sie in jedem Lauf siehst; `account.balance += 1` in einer einzelnen Zeile hat genau denselben Mangel, es verliert Updates nur etwas seltener.)\n\n* callout(Probier es aus): Reduziere die Schleife von `1_000` auf `10` Kassierer und führe sie ein paar Mal aus. Kommt der Kontostand immer noch genauso oft falsch heraus?\n\n[Zurück](@previous)  |  Seite 2 von 9  |  [Weiter: Schwer zu fassen](@next)";
