Zum Inhalt springen

Race Condition

Ein fehlerhaftes Ergebnis hängt von der zeitlichen Reihenfolge überlappender Zugriffe ab.

Softwarearchitektur

Was ist eine Race Condition?

Eine Race Condition entsteht, wenn ein Ergebnis unzulässig von der zeitlichen Reihenfolge nebenläufiger Abläufe abhängt. Häufig greifen mehrere Vorgänge auf gemeinsamen Zustand zu, ohne passend abgestimmt zu sein. Sie müssen dafür nicht zwingend auf mehreren Prozessorkernen gleichzeitig laufen. Auch zeitlich verschachtelte Zugriffe können eine ungeeignete Reihenfolge erzeugen.

In einem erfundenen Portal prüfen zwei Reservierungsanfragen denselben letzten verfügbaren Artikel. Beide sehen zunächst Verfügbarkeit und könnten ohne passende Absicherung beide Erfolg melden. Prüfung und Reservierung müssen deshalb gemeinsam so abgesichert werden, dass nur eine Anfrage den letzten Artikel erfolgreich reservieren kann; erst das Ergebnis bestimmt die Rückmeldung. Eine bloß geöffnete Datenbanktransaktion beweist noch nicht, dass dieser Konflikt verhindert wird. Das Team prüft gezielt überlappende Abläufe und die verwendete Absicherung.

Quellen