Kapitel 9. Unsere eigenen Schlösser bauen
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
In diesem Kapitel bauen wir unsere eigene Mutex, Bedingungsvariable und Leser-Schreiber-Sperre. Für jede dieser Funktionen beginnen wir mit einer sehr einfachen Version und erweitern sie dann, um sie effizienter zu machen.
Da wir die Sperrtypen aus der Standardbibliothek nicht verwenden werden (das wäre Betrug), müssen wir die Werkzeuge aus Kapitel 8 nutzen, um Threads ohne Busy-Looping warten zu lassen. Wie wir in diesem Kapitel gesehen haben, unterscheiden sich die verfügbaren Werkzeuge, die das Betriebssystem zur Verfügung stellt, jedoch stark von Plattform zu Plattform, was es schwierig macht, etwas zu entwickeln, das plattformübergreifend funktioniert.
Glücklicherweise unterstützen die meisten modernen Betriebssysteme futex-ähnliche Funktionen oder zumindest die Wake- und Wait-Operationen. Wie wir in Kapitel 8 gesehen haben, unterstützt Linux diese seit 2003 mit dem Syscall futex
, Windows seit 2012 mit der WaitOnAddress
-Funktionsfamilie, FreeBSD seit 2016 als Teil des Syscalls _umtx_op
, und so weiter.
Die bemerkenswerteste Ausnahme ist macOS, dessen Kernel diese Operationen zwar unterstützt, aber keine stabile, öffentlich nutzbare C-Funktion bereitstellt, die wir verwenden können. macOS wird jedoch mit einer aktuellen Version von libc++ ausgeliefert, einer Implementierung der C++ Standardbibliothek. ...
Get Rust Atomics und Schlösser now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.