In der Informatik werden Probleme als ABA-Problem bezeichnet, bei denen während der Synchronisierung Fehler auftraten, wenn an einer Speicherstelle zweimal derselbe Wert gelesen wird und fälschlicherweise daraus geschlossen wird, dass in der Zwischenzeit dieser Wert nicht verändert wurde. Es ist möglich, dass ein anderer Thread (oder Prozess) diese Speicherstelle ausliest, den Wert ändert und dann denselben Wert zurückschreibt.[1][2]

Das folgende Beispiel verdeutlicht das ABA-Problem:

  1. Prozess liest den Wert A aus einer Speicherstelle,
  2. wird unterbrochen, sodass weiterarbeiten kann,
  3. schreibt den Wert B in die Speicherstelle,
  4. schreibt den Wert A in die Speicherstelle,
  5. wird unterbrochen, sodass weiterarbeiten kann,
  6. liest den Wert A aus der Speicherstelle,
  7. entscheidet, dass der Wert in der Speicherstelle nicht verändert wurde und arbeitet unter dieser Annahme weiter.

Obwohl weiterarbeiten kann, ist es möglich, dass das Verhalten aufgrund der „versteckten“ Veränderung falsch ist.

Ein Beispiel des ABA-Problems sind nicht-blockierende Datenstrukturen. Wenn ein Element aus einer Liste entfernt wird und dann ein neues Element hinzugefügt wird, kann es vorkommen, dass das neue Element an derselben Speicherstelle (siehe Cache-Algorithmus) abgelegt wird, da das zuvor entfernte Element nicht mehr benötigt wird. Ein Zeiger auf das neue Element ist oft gleich wie der Zeiger auf das alte Element, was das ABA-Problem auslösen kann.

Einzelnachweise

Bearbeiten
  1. heise online: ABA – A ist nicht gleich A. 12. Juni 2017, abgerufen am 25. Februar 2024.
  2. R. Guerraoui: Distributed Computing: 18th International Conference, DISC 2004, Amsterdam, The Netherlands, October 4-8, 2004. Proceedings (= Lecture Notes in Computer Science). Springer Berlin Heidelberg, 2004, ISBN 978-3-540-30186-8, S. 144 (google.de [abgerufen am 25. Februar 2024]).

{{DEFAULTSORT:Aba Problem}} [[Kategorie:Parallelverarbeitung]]