Template Class LockFreeQueue
Defined in File data_logger_queue.hpp
Base Type
public holoscan::DataLoggerQueue< T >(Template Class DataLoggerQueue)
-
template<typename T>
class LockFreeQueue : public holoscan::DataLoggerQueue<T> Lock-free queue implementation using MoodyCamel’s ConcurrentQueue.
This is a high-performance lock-free MPMC (Multiple Producer Multiple Consumer) queue that uses per-producer sub-queues for optimal concurrency.
Thread Safety:
Fully thread-safe for concurrent enqueue and dequeue operations
No locks or blocking operations (wait-free for producers, lock-free for consumers)
Safe to call from multiple threads simultaneously
Ordering Guarantees:
Maintains FIFO order per-producer (items from the same thread stay ordered)
Does NOT guarantee global FIFO order across multiple producers
Items from different threads may be interleaved in any order
Performance Characteristics:
Excellent throughput with minimal contention
size_approx() returns an estimate that may be stale immediately after return
- Template Parameters
T – The type of elements stored in the queue
Public Functions
-
inline explicit LockFreeQueue(size_t capacity)
Construct a lock-free queue with the specified capacity.
- Parameters
capacity – The target maximum capacity (note: ConcurrentQueue treats this as a hint)
-
inline virtual bool try_enqueue(T &&item) override
Attempt to enqueue an item (thread-safe).
- Parameters
item – The item to enqueue (will be moved)
- Returns
true if successfully enqueued, false if queue is full
-
inline virtual bool try_dequeue(T &item) override
Attempt to dequeue an item (thread-safe).
- Parameters
item – Output parameter where the dequeued item will be moved
- Returns
true if an item was dequeued, false if queue is empty
-
inline virtual size_t size_approx() const override
Get size of the queue (thread-safe).
Note: The accuracy of this value depends on the implementation:
LockFreeQueue: Returns an approximation that may be stale by the time it’s returned
OrderedQueue: Returns the exact size at the moment the mutex was acquired
- Returns
Number of items in the queue (approximation or exact, depending on implementation)