Multicore und Synchronisation
Welche Aussage zu einem Data Race (Datenwettlauf) ist richtig?
- AMehrere Threads lesen nur gleichzeitig dieselbe Variable
- BEin Thread schreibt zweimal hintereinander in dieselbe Variable
- CMehrere Threads greifen ohne Synchronisation gleichzeitig auf dieselbe Variable zu, und mindestens einer davon schreibt
Antwort und Erläuterung anzeigen
Antwort: C. Mehrere Threads greifen ohne Synchronisation gleichzeitig auf dieselbe Variable zu, und mindestens einer davon schreibt
Ein Data Race ist ein Zustand, in dem die Reihenfolge von Lese- und Schreibzugriffen auf dieselbe Stelle nicht durch Synchronisation festgelegt ist und das Ergebnis davon abhängt, in welcher Reihenfolge ausgeführt wurde. Da er je nach Timing auftritt oder nicht, ist er ein schwer durch Tests zu findender Fehler. In C und C++ ist das Verhalten von Programmen mit Data Race undefiniert. Die Reihenfolge muss durch Sperren oder atomare Variablen festgelegt werden.