The following synchronization primitives will be supported:
- Spinlocks with different locking schemes:
-
spinlock_tas
- Naive spinlock that utilizes atomic test-and-set operation (unfair). -
spinlock_tatas
- Optimized version of unfairspinlock_tas
that spins on reading the lock before calling expensive test-and-set operation ([test-and-]test-and-set). -
spinlock_tas_eb
- Optimized version of unfairspinlock_tas
that uses exponential back-off while trying to acquire the lock. -
spinlock_cas
- Naive spinlock that utilizes atomic compare-and-swap operation (unfair). -
spinlock_anderson
- Scalable, fast and fair spinlock based on Anderson's array-based queuing lock -
spinlock_clh
- An efficient implementation of the scalable CLH lock, providing many of the same performance properties of MCS with a better fast-path. -
spinlock_HCLH
- A NUMA-friendly CLH lock -
spinlock_mcs
- An implementation of the seminal scalable and fair MCS lock -
spinlock_ticket
- An implementation of fair centralized locks - ...
-
- Seqlock (sequential lock)
- RCU (
read-copy-update
) - ...
The following concurrency patterns will be supported:
- Disruptor
- ...