PFlock: Phase-Fair Reader-Writer Lock
This library provides a phase-fair reader-writer lock, as described in the paper "Reader-Writer Synchronization for Shared-Memory Multiprocessor Real-Time Systems". by Brandenburg et. al.
Reader preference, writer preference, and task-fair reader-writer locks are shown to cause undue blocking in multiprocessor real-time systems. A new phase-fair reader-writer lock is proposed as an alternative that significantly reduces worst-case blocking for readers.
Example
use PFLock;
let lock = new;
// many reader locks can be held at once
// read locks are dropped at this point
// only one write lock may be held, however
// write lock is dropped here
@inproceedings
C implementation
A reference implementation in C is provided in the branch
cnord/ffi in the
directory pflock_c/.
Run tests with the reference implementation using RUSTFLAGS="--cfg c_reference"
, e.g.
RUSTFLAGS="--cfg c_reference"
License
All code is under the MIT license except for the C implementation in pflock_c/, which has its own license in the file.