Wenn Sie eine Seite von der Seite 205 des Buches "Die Kunst der Multiprozessor-Programmierung" (Elsevier, 2012 ISBN 978) bis Seite 206 (Abschnitt 9.6 Optimistische Synchronisation) scrollen: https://books.google.com/... sehen Sie die add/remove/contains Methoden zur optimistischen Synchronisation (Abbildung 9.11) Die OptimisticList
Klasse: Die add()
Methode durchläuft die Liste ohne Sperren, erwirbt Sperren und validiert vor dem Hinzufügen des neuen Knotens Abbildung 9.12 Die OptimisticList
Klasse: Die remove()
Methode durchläuft das Ignorieren von Sperren, erwirbt Sperren und validiert zuvor Entfernen des Knotens. page copy).Ist die optimistische Synchronisation ohne Warten auf Hinzufügen, Entfernen und Enthalten?
Im folgenden Abschnitt auf faule Synchronisation, geht es in dem Zustand auf (während optimistischer Synchronisation mit Bezug)
The next step is to refine this algorithm so that contains() calls are wait-free, and add() and remove() methods, while still blocking, traverse the list only once
Dies scheint zu sagen, dass die enthält Methode ist nicht frei warten, und so weder würde die hinzufügen oder entfernen Methoden sein. Aber ich kann nicht verstehen, warum das der Fall ist.
Implementierung aller 3 Methoden Aufrufe .lock(), die warten können. Deshalb sind sie nicht wartefrei. – Tsyvarev