MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ pop_lockfree()

template<typename T , typename StoragePolicy , typename ConcurrencyPolicy = SingleThreadedPolicy, typename AccessPattern = QueueAccess>
std::optional< T > MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::pop_lockfree ( )
inlineprivatenoexcept

Definition at line 1152 of file RingBuffer.hpp.

1153 {
1154 auto read = m_state.read_index.load(std::memory_order_relaxed);
1155
1156 if (read == m_state.write_index.load(std::memory_order_acquire)) {
1157 return std::nullopt;
1158 }
1159
1160 T value = m_storage.buffer[read];
1161 m_state.read_index.store(
1162 State::increment(read, m_storage.capacity()),
1163 std::memory_order_release);
1164
1165 return value;
1166 }
float value

References MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::m_state, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::m_storage, and value.

Referenced by MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::pop().

+ Here is the caller graph for this function: