Zum Inhalt springen
uencoder

Data Race

Ein Data Race tritt auf, wenn mehrere Threads ohne Synchronisierung gleichzeitig auf dieselbe Speicherstelle lesen und schreiben, wobei mindestens ein Schreibvorgang stattfindet — was undefiniertes Verhalten verursacht.

Zweck

Das undefinierte Verhalten verstehen, das Data Races verursachen, und ihre Abwehrmaßnahmen; ein Kernanliegen der Korrektheit nebenläufiger Programme.

Mechanismus

Thread A schreibt x, während Thread B ohne Synchronisierung x liest/schreibt; das Ergebnis ist unbestimmt (zerrissene Werte, partielle Schreibvorgänge). In C/C++ ist ein Data Race undefiniertes Verhalten. Abwehr: Mutexe, atomare Operationen, Memory-Barrieren.

Anwendungsfälle

  • Analyse der Korrektheit der Nebenläufigkeit
  • Thread-Sicherheitsaudit
  • Erkennung von Data Races

Verwandte Tools

References