So würde ich über den Artikel Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms von Maged M. Michael und Michael L. Scott, und es gibt ein kleines Problem, das ich nicht bekommen:Zwei-Lock Concurrent Queue-Algorithmus Ausgabe
Nehmen wir an, wir haben zwei gleichzeitige Threads, die direkt nach der Initialisierung der Warteschlange ausgelöst werden. Einer der Threads ruft enqueue
und die anderen Aufrufe dequeue
. Was verhindert, dass sie gleichzeitig auf das Feld next
des Dummy-Knotens zugreifen? kann der dequeue
Thread das next
Feld nicht lesen, während der enqueue
Thread dazu schreibt? Sie benutzen beide verschiedene Schlösser ... also verstehe ich nicht, was zwischen ihnen synchronisiert ..
Danke.
Welchen Dummy-Knoten meinen Sie? – Saeed
derjenige, der bei initialize() erstellt wird – gipouf
Ich vermute, Sie beziehen sich auf den ersten Knoten, der bei der Initialisierung erstellt wird? – Saeed