Zum Inhalt springen

Informatik · Klasse 12 · aktualisiert

Race Condition einfach erklärt

Du erkennst Race Conditions, verfolgst verlorene Änderungen und erklärst, wie Sperren schützen und was bestandene Tests aussagen.

0 von 9 Aufgaben gelöst

Race Condition einfach erklärt

Kurz gesagt

Eine Race Condition ist eine Wettlaufsituation: Das Ergebnis nebenläufiger Abläufe hängt von ihrer zeitlichen Reihenfolge ab. Dabei können Änderungen verloren gehen, wenn ein Ablauf mit einem veralteten Wert weiterarbeitet.

Zwei Abläufe können denselben gespeicherten Wert bearbeiten. Wechseln sich ihre Schritte ungünstig ab, kann eine Änderung die andere überschreiben. Du untersuchst das mit ausgedachten Ablaufmodellen: Sie beschreiben Einzelschritte und sind kein ausführbarer Programmcode.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Termi das Ziel für dich ab.

4 Abschnitte

Eine Race Condition entsteht, wenn das Ergebnis gleichzeitig laufender Abläufe von ihrer zeitlichen Reihenfolge abhängt. Gleichzeitig laufend bedeutet hier nebenläufig: Die Abläufe sind im selben Zeitraum aktiv. Ihre Einzelschritte müssen nicht im exakt selben Augenblick stattfinden.

Wir nennen zwei Abläufe A und B. Jeder behält seine eigene Schrittfolge bei. Trotzdem können sich Schritte von A und B abwechseln. Diese Überlappung ihrer Schrittfolgen heißt Verschachtelung.

Im folgenden Modell gibt es eine gemeinsame Anzeige mit genau einem Textfeld. Jeder Schreibschritt ersetzt den bisherigen Text vollständig. Nach beiden Schreibschritten wird der Text abgelesen. Allein der Zugriff auf gemeinsame Daten reicht als Erklärung einer Race Condition noch nicht: Entscheidend ist, dass die Reihenfolge das Ergebnis beeinflusst.

Definition

Race Condition

Eine Wettlaufsituation, bei der das Ergebnis davon abhängt, in welcher zeitlichen Reihenfolge die Schritte nebenläufiger Abläufe ausgeführt werden.

Beispiel: Eine gemeinsame Anzeige (ausgedachtes Modell)

  1. 1A schreibt den Text „bereit“. B schreibt den Text „Pause“.
  2. 2Schreibt zuerst A und danach B, zeigt die Anzeige am Ende „Pause“.
  3. 3Schreibt zuerst B und danach A, zeigt die Anzeige am Ende „bereit“.
  4. 4Die Schreibreihenfolge verändert den abgelesenen Text. Damit liegt in diesem Modell eine Race Condition vor.

Teste dich

LeichtIm Anzeigenmodell schreibt A zuerst „bereit“ und danach B „Pause“. Was steht nach beiden Schreibschritten dort?

Alles auf einen Blick

Race Condition

  • Race Condition

    Das Ergebnis nebenläufiger Abläufe hängt von der zeitlichen Reihenfolge ihrer Schritte ab.

  • Verschachtelung

    Schritte verschiedener Abläufe wechseln sich ab; die Schrittfolge innerhalb jedes Ablaufs bleibt im Modell erhalten.

  • Verlorenes Update

    Ein aus einem alten Wert berechnetes Ergebnis überschreibt die Änderung eines anderen Ablaufs.

  • Sperre

    Im Rechenmodell schützt dieselbe Sperre beide Abläufe vom Lesen bis einschließlich zum Zurückschreiben.

  • Tests

    Ein bestandener Lauf schließt Fehler bei anderen möglichen Reihenfolgen nicht aus.

Musteraufgabe · Schritt für Schritt

Den Endwert eines Zählers bestimmen (ausgedachtes Modell)

  1. 1Der gemeinsame Zähler startet bei 8. A soll um 5 erhöhen, B um 2. Beide Änderungen sollen genau einmal eingehen; erwartet ist der Endwert 15.
  2. 2A liest 8 und legt diesen Wert als eigenen Zwischenwert ab.
  3. 3B liest ebenfalls 8 und legt einen eigenen Zwischenwert ab.
  4. 4A erhöht seinen Zwischenwert auf 13 und schreibt 13 in den gemeinsamen Zähler.
  5. 5B erhöht seinen zuvor gelesenen Zwischenwert auf 10 und schreibt 10 in den gemeinsamen Zähler.
  6. 6Der Endwert ist 10. As Erhöhung um 5 fehlt, weil B mit dem alten Wert 8 gerechnet und As Ergebnis überschrieben hat.
  7. 7Mit derselben Sperre um Lesen, Rechnen und Schreiben könnte A zuerst 13 schreiben. B würde anschließend 13 lesen und 15 schreiben.

Fehler finden

Prüfe den Ablauf eines Zählers (ausgedachtes Modell) In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Ein erfundener Zähler startet bei 50. A erhöht um 2, B um 6. Beide lesen zuerst 50. Danach schreibt A 52 und zuletzt B 56. Der gemeinsame Endwert ist . Damit sich die gesamten Schrittfolgen aus Lesen, Rechnen und Zurückschreiben nicht überschneiden, erwirbt jeder Ablauf dieselbe Sperre dem Lesen und gibt sie nach dem Zurückschreiben frei. In einem einzelnen Test liest, rechnet und schreibt A fertig, bevor B beginnt. Die Schrittfolge „B liest, bevor A schreibt“ ist in diesem Test .

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Race Condition

LeichtIn einem ausgedachten Modell bearbeiten zwei Abläufe denselben Wert. Jeder führt Lesen, Rechnen und Schreiben aus. Die sechs Schritte wechseln sich ab. Welche Aussage passt?
MittelEin ausgedachtes Spiel speichert gemeinsam gesammelte Sterne als Zahl. Anfangs sind es 60. A erhöht die Zahl um 9, B um 4. In Folge X liest A 60 und schreibt 69; danach liest B 69 und schreibt 73. In Folge Y lesen beide 60; dann schreibt B 64 und A 69. In welcher Folge geht eine Änderung verloren?
SchwerZwei Abläufe erhöhen einen gemeinsamen Zähler nach unserem Rechenmodell. Sie benutzen dieselbe Sperre ausschließlich beim Zurückschreiben. In 500 ausgedachten Testläufen stimmt der Endwert. Welche Bewertung folgt?

Weiterlesen in Informatik