Optimierung von Speicherbarrieren und atomaren CAS in C-Multithread-Queues: Inline-Assembler und Duff's Device?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet
Wie kann ich am besten Speicherbarrieren in einer atomaren Compare-and-Swap Routine handeln, um Race Conditions in einem nicht-blockierenden Queue-Algorithmus zu vermeiden?

Du setzt die Barrieren da, wo du sie brauchst. Anders macht es keinen Sinn.

Zusätzlich würde ich gerne wissen, wie sich die Verwendung von Duff's Device auf die Pipeline-Prediction und Cache-Lokalität auswirkt.

Auf modernen Prozessoren im Zweifelsfalle negativ. Schleifen unrollen machen Prozessoren und Compiler heutzutage üblicherweise deutlich effizienter, als du das könntest. Insbesondere wenn du irgendwelche komischen Switch-Abfragen reinpackst.

Aber womöglich optimiert dir dein Compiler das auch einfach weg.