118 else if (sequenceDelta
131 pBuffer[writePos & uQueueIndexMask].value = in_value;
132 AkAtomicStore64(&pBuffer[writePos & uQueueIndexMask].uSequence, writePos + 1);
140 const AkInt64 uQueueIndexMask = m_uQueueIndexMask;
141 FifoQueueEntry* pBuffer = m_buffer;
146 AkInt64 sequenceDelta =
AkAtomicLoad64(&pBuffer[readPos & uQueueIndexMask].uSequence) - (readPos + 1);
148 if (sequenceDelta == 0)
156 else if (sequenceDelta
168 io_value = pBuffer[readPos & uQueueIndexMask].value;
169 AkAtomicStore64(&pBuffer[readPos & uQueueIndexMask].uSequence, readPos + m_uQueueIndexMask + 1);
178 AkInt64 sequenceDelta =
AkAtomicLoad64(&m_buffer[readPos & m_uQueueIndexMask].uSequence) - (readPos + 1);
179 return sequenceDelta
183 struct FifoQueueEntry
192 FifoQueueEntry* m_buffer;
202 #endif // _AKFIFOQUEUE_H
AKSOUNDENGINE_API void Free(AkMemPoolId in_poolId, void *in_pMemAddress)
AKRESULT
Standard function call result.
bool Dequeue(T &io_value)
@ AK_Success
The operation was successful.
bool Empty()
Checks if there is a value available to be dequeued.
#define AKASSERT(Condition)
volatile int64_t AkAtomic64
AK_NODISCARD bool Enqueue(T in_value)
int64_t AkInt64
Signed 64-bit integer.
uint64_t AkUInt64
Unsigned 64-bit integer.
uint32_t AkUInt32
Unsigned 32-bit integer.
@ AK_InsufficientMemory
Memory error.
AKRESULT Init(AkUInt32 in_uMaxEntries)