3#include <Common/config.h>
5#include <moodycamel/concurrentqueue.h>
41 template<std::input_iterator Iterator>
42 void enqueueBulk(Iterator firstItem, std::size_t numItems);
61 template<std::output_iterator<T> Iterator>
62 std::size_t
tryDequeueBulk(Iterator out_firstItem, std::size_t numItems);
73#if PH_ENSURE_LOCKFREE_ALGORITHMS_ARE_LOCKLESS
74 static_assert(moodycamel::ConcurrentQueue<T>::is_lock_free());
111 moodycamel::ConcurrentQueue<T> m_queue;
A multi-producer, multi-consumer, lock-free concurrent queue-like structure. For single-thread uses,...
Definition TAtomicQuasiQueue.h:24
std::size_t estimatedSize() const
Approximated size of the queue.
Definition TAtomicQuasiQueue.ipp:65
bool tryDequeue(T *out_item)
Try to dequeue an item. While there is no contention, dequeue fails if there is no item or the memory...
Definition TAtomicQuasiQueue.ipp:51
std::size_t tryDequeueBulk(Iterator out_firstItem, std::size_t numItems)
Definition TAtomicQuasiQueue.ipp:59
TAtomicQuasiQueue()
Definition TAtomicQuasiQueue.ipp:12
bool tryEnqueue(U &&item)
Try to enqueue an item. Never allocate memory.
Definition TAtomicQuasiQueue.ipp:45
void enqueue(U &&item)
Enqueue an item. Allocate memory if required. Basic aquire-release semantics are guaranteed....
Definition TAtomicQuasiQueue.ipp:23
void enqueueBulk(Iterator firstItem, std::size_t numItems)
Enqueue multiple items at once. Similar to enqueue(1). Use std::make_move_iterator if the items shoul...
Definition TAtomicQuasiQueue.ipp:34
The root for all renderer implementations.
Definition EEngineProject.h:6