3#ifndef TRAM_SDK_TEMPLATES_QUEUE_H
4#define TRAM_SDK_TEMPLATES_QUEUE_H
23 T* allocated_memory = (T*)::
operator new (
count *
sizeof(T));
25 first = allocated_memory;
26 last = allocated_memory;
35 template <
typename... Args>
36 void push(Args&&... args) {
40 std::cout <<
"Queue " <<
name <<
" out of space!" << std::endl;
45 new (
last) T (std::forward<Args>(args)...);
Simple queue implementation.
Definition: queue.h:17
bool try_pop(T &value)
Thread safe.
Definition: queue.h:86
void unlock()
Definition: queue.h:104
void lock()
Definition: queue.h:103
T * memory_start
Definition: queue.h:112
void push(Args &&... args)
Thread safe.
Definition: queue.h:36
T & front()
Definition: queue.h:70
Queue(const Queue &)=delete
std::atomic< bool > spinlock
Definition: queue.h:115
void pop()
Definition: queue.h:58
T * last
Definition: queue.h:111
size_t count
Definition: queue.h:109
const char * name
Definition: queue.h:107
T * memory_end
Definition: queue.h:113
T & back()
Definition: queue.h:74
Queue(const char *name, size_t count)
Definition: queue.h:22
T * first
Definition: queue.h:110
size_t csize
Definition: queue.h:108
size_t size()
Definition: queue.h:101