Sperrungsfreie Fortschrittsgarantien in einer kreisförmigen Pufferwarteschlange
Übersicht:
Viele Programmierer Ich glaube fälschlicherweise, dass sich „lock-free“ einfach auf gleichzeitige Programmierung ohne Mutexe bezieht. Echte sperrenfreie Algorithmen bieten jedoch Fortschrittsgarantien und stellen sicher, dass mindestens ein Thread unabhängig von den Aktionen anderer Threads Fortschritte machen kann.
Die Liblfds Bounded Queue:
Die Implementierung einer begrenzten Warteschlange in der liblfds-Bibliothek erscheint im Hinblick auf sperrenfreie Fortschrittsgarantien fragwürdig. Der Algorithmus reserviert Slots zum Pushen, was bedeutet, dass Slots erst dann gepoppt werden können, wenn der Push-Thread abgeschlossen ist. Diese Abhängigkeit wirft Bedenken auf, ob die Warteschlange wirklich als sperrenfrei gilt.
Definition von Sperrenfrei:
Eine sperrenfreie Struktur ist eine Struktur, die jeder Thread erreichen kann kann jederzeit auf unbestimmte Zeit angehalten werden, ohne dass andere Threads daran gehindert werden, die Struktur zu verwenden. Nach dieser Definition ist die liblfds-Warteschlange nicht streng sperrenfrei. Wenn ein Push-Thread angehalten wird, geht die Warteschlange in einen unbrauchbaren Zustand über, wodurch der Vertrag einer Warteschlange mit fester Größe verletzt wird.
Leistung vs. Korrektheit:
Während dieser Implementierung zwar angemessene Leistungseigenschaften aufweisen, ihm fehlen jedoch einige kritische Korrektheitseigenschaften einer wirklich sperrenfreien Struktur. Zu den wichtigsten Funktionsmängeln gehören:
Schlussfolgerung:
Die liblfds-Implementierung der begrenzten Warteschlange erfüllt nicht die strengste Definition von sperrenfrei. Es bietet einige Leistungsvorteile, es fehlen jedoch bestimmte funktionale Garantien, die für die Sicherstellung von Fortschritt und Korrektheit in allen Szenarien entscheidend sind.
Das obige ist der detaillierte Inhalt vonIst die Liblfds Bounded Queue wirklich sperrenfrei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!