Laut an article auf IBM.com ist eine Race Condition eine Situation, in der zwei oder mehr Threads oder Prozesse gemeinsame Daten lesen oder schreiben und das Endergebnis vom Timing der geplanten Threads abhängt kann zu unvorhersehbaren Ergebnissen und subtilen Programmfehlern führen. " . Obwohl der Artikel Java betrifft, wurde mir im Allgemeinen die gleiche Definition beigebracht.Was ist mit Race Condition in Multithreading lesen?
Soweit ich weiß, besteht die einfache Funktion des Lesens aus dem RAM darin, die Zustände bestimmter Eingangsleitungen (Adresse, Lesen usw.) einzustellen und die Zustände der Ausgangsleitungen zu lesen. Dies ist eine Operation, die offensichtlich nicht gleichzeitig von zwei Geräten ausgeführt werden kann und serialisiert werden muss.
Jetzt nehmen wir an, wir haben eine Situation, wenn ein paar Threads auf ein Objekt im Speicher zugreifen. Theoretisch sollte dieser Zugang serialisiert werden, um Rennbedingungen zu vermeiden. Aber z.B. Der Leser/Schreiber-Algorithmus geht davon aus, dass eine beliebige Anzahl von Lesern den gemeinsamen Speicher gleichzeitig nutzen kann.
Die Frage ist also: Muss man eine exklusive Sperre für das Lesen implementieren, wenn Multithreading (in WinAPI beispielsweise) verwendet wird? Wenn nicht, warum? Wo ist diese Kontrolle implementiert - Betriebssystem, Hardware?
Mit freundlichen Grüßen, Kuba
hah, erzählt'ya;] –