|
arduino-audio-tools
|
Lock-free MPMC queue. More...
#include <QueueLockFree.h>
Classes | |
| struct | Node |
Public Member Functions | |
| QueueLockFree (size_t capacity, Allocator &allocator=DefaultAllocator) | |
| ~QueueLockFree () | |
| size_t | availableForWrite () const |
| size_t | capacity () const |
| void | clear () |
| bool | dequeue (T &result) |
| bool | empty () const |
| bool | enqueue (const T &data) |
| bool | enqueue (T &&data) |
| bool | resize (size_t capacity) |
| void | setAllocator (Allocator &allocator) |
| size_t | size () const |
Protected Member Functions | |
| template<typename U > | |
| bool | emplace (U &&val) |
Protected Attributes | |
| size_t | capacity_mask = 0 |
| size_t | capacity_value = 0 |
| std::atomic< size_t > | head_pos {0} |
| Node * | p_node = nullptr |
| std::atomic< size_t > | tail_pos {0} |
| Vector< Node > | vector |
Lock-free MPMC queue.
T must be move-constructible; default-constructibility is NOT required (element storage is raw bytes — no T object is created until enqueue).
|
inline |
|
inline |