Asymmetrische Fences in C++: Wie Linux membarrier() den schnellen Pfad beschleunigt

C++ Details of Asymmetric Fences

Asymmetrische Fences in C++: Wie Linux membarrier() den schnellen Pfad beschleunigt

Der Artikel untersucht asymmetrische Thread-Fences, die in C++-Bibliotheken wie Folly verwendet werden, um den häufigen Pfad in nebenläufigen Algorithmen zu optimieren. Auf Linux basiert die Implementierung auf dem membarrier()-Syscall, der schwere Synchronisation auf den seltenen Pfad verlagert. Der Autor erklärt die C++-Proposal P1202R0, die Verwendung von Compiler-Barrieren für den leichten Fence und die Funktionsweise von membarrier() mit den Befehlen MEMBARRIER_CMD_PRIVATE_EXPEDITED und REGISTER_PRIVATE_EXPEDITED. Dabei wird gezeigt, wie der Kernel die Ordnungsgarantien für laufende Threads im selben Prozess umsetzt.

Die Idee ist, für diese passenden Barrieren die schnellen Speicherbarrieren durch einfache Compiler-Barrieren zu ersetzen und die langsamen Speicherbarrieren durch Aufrufe von membarrier() zu ersetzen.

Mehr von diesem Tag

2026-07-07