25#ifndef LMMS_LOCKLESS_LIST_H
26#define LMMS_LOCKLESS_LIST_H
60 e->next =
m_first.load(std::memory_order_relaxed);
62 while (!
m_first.compare_exchange_weak(
e->next,
e,
63 std::memory_order_release,
64 std::memory_order_relaxed))
72 return m_first.exchange(
nullptr);
77 return m_first.load(std::memory_order_acquire);
82 m_first.store(
e, std::memory_order_release);
#define nullptr
Definition DistrhoDefines.h:75
Definition LocklessAllocator.h:63
LocklessList(size_t size)
Definition LocklessList.h:45
Element * popList()
Definition LocklessList.h:70
void free(Element *e)
Definition LocklessList.h:85
~LocklessList()
Definition LocklessList.h:51
LocklessAllocatorT< Element > * m_allocator
Definition LocklessList.h:93
void push(T value)
Definition LocklessList.h:56
Element * first()
Definition LocklessList.h:75
void setFirst(Element *e)
Definition LocklessList.h:80
std::atomic< Element * > m_first
Definition LocklessList.h:92
* e
Definition inflate.c:1404
static PuglViewHint int value
Definition pugl.h:1708
Definition AudioAlsa.cpp:35
Definition LocklessList.h:40
Element * next
Definition LocklessList.h:42
T value
Definition LocklessList.h:41