Eine Wettlaufsituation,[1] aus dem Englischen auch Race Condition (deutsch Wettlauf-Bedingung) oder Race Hazard (deutsch Wettlauf-Risiko), mitunter auch „kritische Wettlaufsituation“, bezeichnet in der Programmierung eine Konstellation, in der das Ergebnis einer Operation vom zeitlichen Verhalten bestimmter Einzeloperationen oder der Umgebung abhängt. Der Begriff stammt von der Vorstellung, dass zwei Signale wettlaufen, um die Ausgabe als erstes zu beeinflussen. Im Allgemeinen ist die Möglichkeit zu vermeiden, dass eine Race Condition entsteht.
Unbeabsichtigte Wettlaufsituationen sind ein häufiger Grund für schwer auffindbare nichtdeterministische Programmfehler. Bezeichnend für solche Situationen ist, dass bereits die veränderten Bedingungen zum Programmtest, wie zusätzliches Logging oder Debug-Modus, zu einem völligen Verschwinden der Symptome führen können – siehe hierzu auch Heisenbug. Zur Vermeidung solcher Konstellationen können bei der Programmerstellung beispielsweise Semaphore eingesetzt werden.