Use Lock-Free and Wait-Free Data Structures
masterThe library includes several high-performance structures that do not strictly rely on RCU for their core mechanics, but offer different synchronization guarantees:
Stacks
urcu/wfstack.h: Provides wait-freepushand wait-freepop_all. Supports both blocking and non-blockingpopand traversal. Note: Requires external synchronization techniques to handle the ABA problem duringpop.urcu/lfstack.h: Provides lock-freepushand lock-freepop, along with wait-freepop_alland wait-free traversal. (Note: This deprecatesurcu/rculfstack.h). Requires external synchronization to handle ABA.
Queues
urcu/wfcqueue.h: Concurrent queue with wait-freeenqueue. Supports blocking/non-blockingdequeue,splice(moving all elements from one queue to another), and traversal. Uses mutual exclusion fordequeue,splice(from source), and traversal. (Note: This deprecatesurcu/wfqueue.h).urcu/rculfqueue.h: RCU-based queue with lock-freeenqueueand lock-freedequeue. Uses RCU to provide existence guarantees.