www.wikidata.de-de.nina.az
Race Condition ist eine Weiterleitung auf diesen Artikel Zur Verwendung in der Elektronik siehe Glitch Elektronik 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 abhangt Der Begriff stammt von der Vorstellung dass zwei Signale wettlaufen um die Ausgabe als erstes zu beeinflussen Im Allgemeinen ist die Moglichkeit zu vermeiden dass eine Race Condition entsteht Unbeabsichtigte Wettlaufsituationen sind ein haufiger Grund fur schwer auffindbare nichtdeterministische Programmfehler Bezeichnend fur solche Situationen ist dass bereits die veranderten Bedingungen zum Programmtest wie zusatzliches Logging oder Debug Modus zu einem volligen Verschwinden der Symptome fuhren konnen siehe hierzu auch Heisenbug Zur Vermeidung solcher Konstellationen konnen bei der Programmerstellung beispielsweise Semaphore eingesetzt werden Beispiel BearbeitenZwei gleichzeitig laufende Systeme wollen denselben Wert erhohen Die notwendigen Einzelschritte die jedes der beiden Systeme durchlaufen muss sind Wert lesen Der Wert wird aus dem externen Speicher in den internen Speicher gelesen Wert erhohen Der Wert wird im internen Speicher um 1 erhoht Wert schreiben Der Wert wird aus dem internen Speicher zuruck in den externen Speicher geschrieben Angenommen der Wert betrage anfangs 1 Das erste System heisst A das zweite System B Erhohen beide Systeme den Wert ist der erwartete neue Wert 3 Wenn System A zeitlich vor System B arbeitet wird das auch so sein Zeitpunkt System A Gespeicherter Wert System B1 Einlesen des WertesWert 1 12 Erhohen des internen Wertes um einsWert 2 13 Speichern des Wertes 24 2 Einlesen des WertesWert 25 2 Erhohen des internen Wertes um einsWert 36 3 Speichern des WertesArbeiten beide Systeme gleichzeitig und ist die Reihenfolge der Befehle unbestimmt kann die Wettlaufsituation jedoch dazu fuhren dass der tatsachlich erhaltene neue Wert stattdessen 2 betragt Zeitpunkt System A Gespeicherter Wert System B1 Einlesen des WertesWert 1 1 Einlesen des WertesWert 12 Erhohen des internen Wertes um einsWert 2 1 Erhohen des internen Wertes um einsWert 23 Speichern des Wertes 2 Speichern des WertesZur Vermeidung des Problems musste A den Zugriff auf den Wert bis zum Abschluss der Veranderung so sperren dass B warten muss bis A seinen Zugriff auf den Wert beendet hat Zeitpunkt System A Gespeicherter Wert System B1 Sperrung gegen fremde Zugriffe falls dies nicht moglich ist warten 12 Einlesen des WertesWert 1 1 Versuch Sperrung gegen fremde Zugriffe da nicht moglich warten 3 Erhohen des internen Wertes um einsWert 2 1 Auf Freigabe warten 4 Speichern des Wertes 2 Auf Freigabe warten 5 Aufheben der Sperrung 2 Sperrung gegen fremde Zugriffe nun erfolgreich 6 2 Einlesen des WertesWert 27 2 Erhohen des internen Wertes um einsWert 38 3 Speichern des Wertes9 3 Aufheben der SperrungSiehe auch BearbeitenKritischer Abschnitt Deadlock Informatik Semaphor Time of Check to Time of Use Problem Transaktion Schreib Lese Konflikt Verlorenes UpdateEinzelnachweise Bearbeiten Simon Hoffmann Rainer Lienhart OpenMP Eine Einfuhrung in die parallele Programmierung mit C C Online Ausgabe des korrigierten Nachdrucks Springer Verlag Berlin und Heidelberg 2009 S 92 Download uber SpringerLink Abgerufen von https de wikipedia org w index php title Wettlaufsituation amp oldid 203715002