Ich lese einen Artikel, der das ABA-Problem beschreibt, aber es gibt etwas, das ich nicht verstehen kann. Ich habe Quellcode, der nicht funktioniert und es ist ähnlich dem Beispiel in Artikel, aber ich verstehe das Problem nicht. Hier ist der ArtikelBrauchen Sie Hilfe beim Verständnis des "ABA" -Problems
http://fara.cs.uni-potsdam.de/~jsg/nucleus/index.php?itemid=6
Dort heißt es: Während der tatsächliche Wert von head_ gleich ist (a) die next_ Zeiger ist nicht
Aber wie kann das sein? Wenn zwei Struktur
struct node {
node *next;
data_type data;
};
„head_“ und „Strom“ auf den gleichen Bereich in Speicherobjekten, wie kann Kopf _-> weiter und strom-> nächsten Punkt anders?
Es sagt auch: Die letzte Operation, die vergleichen und tauschen von foo SUCCEEDS wenn es nicht sollte.
Was sollte es dann tun? Laden Sie die gleiche Adresse und versuchen Sie es erneut? Was ist der Unterschied?
Zeit in meinem Code habe ich ähnliche Situation, wo ich compareAndSwap auf dem Objekt zu tun, die von einem anderen Thread auf das Objekt mit ähnlicher Adresse geändert werden könnten
deleted.compare_exchange_strong(head, 0);
aber, wenn das Objekt geändert wird gut initialisiert und es ist Nächster Zeiger enthält Zeiger auf initialisiertes Objekt, was ist das Problem?
Vielen Dank im Voraus.
Veröffentlichen Sie Ihren Code, was passiert, wenn Sie es ausführen und was Sie erwartet haben, wenn Sie es ausführen. Dieser Blogeintrag ist lang und wortreich.:) Wenn Sie wirklich möchten, Parallelität Primitiven zu lernen, empfehle ich Curt Schimmel's Unix-Systeme für moderne Architekturen: Symmetrische Multiprocessing und Caching für Kernel-Programmierer (http://www.powells.com/biblio?isbn=9780201633382) – sarnold
Wenn Ich posten und erklären meinen Code es wird absolut die gleiche Erklärung wie im Blog und vielleicht noch schlimmer, wegen meiner nicht gut genug Englisch :) Meine Quelle ist fast gleich und es funktioniert nicht, also möchte ich überprüfen, ob es enthält wirklich ABA-Problem oder nicht. Danke für das Buch :) Ich war auf der Suche nach etwas Interessantes zu lesen. Aber – ledokol
es scheint nicht das ABA Problem für mich zu sein. Es scheint ein Problem zu geben, Multithreading, aber es ist nicht die Art, wie ich ABA bis jetzt verstanden habe. –