Eine Race Condition oder Race Hazard ist ein Szenario in der elektronischen Verarbeitung, bei dem das Berechnungsergebnis durch eine unvorhergesehene oder unkontrollierte Abfolge von Ereignissen beeinflusst werden könnte. Das zugrunde liegende Konzept ist, dass die Ergebnisse eines Prozesses niemals durch eine der Operationen “ein Rennen gewinnen” (als Erster fertig werden) beeinflusst werden sollten.
Beispiel für Race-Condition
Betrachten Sie die folgende Reihe von Operationen:
- Variable a = 1
- Variable a = a * 5
- Variable b = a – 1
Wenn diese Operationen in der richtigen Reihenfolge verarbeitet werden, sollte die Variable b gleich 4 sein. Wenn Operation 3 jedoch ausgeführt wird, bevor Operation 2 abgeschlossen ist, wäre b gleich 0.
Race-Bedingungen in Prozessoren
Wettlaufbedingungen sind ein wichtiges Problem beim CPU-Design, das sowohl parallele als auch gleichzeitige Verarbeitungstechniken verwendet, um mehrere Befehle in einem überlappenden Zeitrahmen auszuführen. Um sicherzustellen, dass die Ausgabe von Berechnungen nicht beschädigt wird, müssen Rennbedingungen immer vorhergesehen und vermieden werden.
Rennbedingungen in der Software
Es ist auch ein wichtiges Problem für Softwareentwickler, die mit allen Race-Conditions umgehen müssen, die auftreten können, wenn ihr Code in realen Situationen verwendet wird. Bekanntlich führte eine unsachgemäß gehandhabte Rennbedingung in der Software des NASA-Explorationsrover Spirit fast dazu, dass der Rover kurz nach seiner Landung auf dem Mars fast verloren ging.
Design, Parallelverarbeitung, Programmierbegriffe