SMR-required

Group of algorithms that require safe memory reclamation.

Users are expected to couple the usage of these algorithms with an SMR scheme from vsync/smr e.g. vsync/smr/gdump.h . Detached/retired nodes of these algorithms must be retired to the SMR and not freed/recycled directly. Operations of these algorithms should be called within the critical section of the SMR within enter/exit, unless stated otherwise.


File Index

File Description Linearizable Lock-free SMR-required Unbounded-Queue
vsync/map/hashtable_standard.h This is a lock-free listset based hashtable. ✔ ✔ ✔ ❌
vsync/map/listset_coarse.h This implementation of listset uses one lock to serialize all operations. ✔ ❌ ✔ ❌
vsync/map/listset_fine.h This implementation of listset uses fine grained locking. ✔ ❌ ✔ ❌
vsync/map/listset_lazy.h This is a partially parallel implementation with lock-free get. ✔ ❌ ✔ ❌
vsync/map/listset_lf.h Lock-free implementation of listset. ✔ ✔ ✔ ❌
vsync/map/listset_opt.h This implementation is an optimized verison of listset_fine. ✔ ❌ ✔ ❌
vsync/map/skiplist_lf.h Lock-free concurrent skiplist. ✔ ✔ ✔ ❌
vsync/queue/unbounded_queue_lf.h Lock-free unbounded queue. ✔ ✔ ✔ ✔
vsync/queue/vqueue_prio_skiplist_based.h Skiplist-based priority queue implementation. ✔ ✔ ✔ ✔
vsync/queue/vqueue_prio_stack_array_based.h Array-based bounded priority queue. ✔ ✔ ✔ ✔
vsync/stack/elimination_stack.h Unbounded lock-free stack with elimination backoff. ✔ ✔ ✔ ❌
vsync/stack/xbo_stack.h Unbounded lock-free stack with exponential backoff. ✔ ✔ ✔ ❌