Ein kritischer Wettlauf, auch Wettlaufsituation (race condition) ist eine Konstellation, in der das Ergebnis einer Operation vom zeitlichen Verhalten bestimmter Einzeloperationen abhängt.
Unbeabsichtigte oder unvorhergesehene Wettlaufsituationen sind ein häufiger Grund für schwer auffindbare Programmfehler.
Veränderten Bedingungen zum Test im Logging- oder Debuggin-Modus können dazu führen, dass sich der Fehler nicht zeigt.
Beispiel:
Zwei gleichzeitig laufende Systeme wollen den Wert einer gemeinsamen Variablen verändern, z.B. um 1 erhöhen. Dann passiert Folgendes:
Angenommen wir haben zwei Prozesse P1 und P2: Es hängt nun davon ab, ob ein Prozess alle drei Schritte durchläuft und dann erst der andere zum Zuge kommt oder ob sich beide Prozesse abwechseln, z.B. erst macht P1 1., dann P2 1., dann P1 die Schritte 2 und 3 und dann P2 die Schritte 2 und 3. Die Werte in der Variablen sind dann verschieden.