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

◆ push_mpsc()

template<typename T , typename StoragePolicy , typename ConcurrencyPolicy = SingleThreadedPolicy, typename AccessPattern = QueueAccess>
bool MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::push_mpsc ( const T &  value)
inlineprivatenoexcept

Definition at line 1202 of file RingBuffer.hpp.

1203 {
1204 const size_t cap = m_storage.capacity();
1205
1206 size_t slot = m_state.claim_index.fetch_add(1, std::memory_order_relaxed) & (cap - 1);
1207
1208 if (m_state.ready_flags[slot].load(std::memory_order_acquire))
1209 return false;
1210
1211 m_storage.buffer[slot] = value;
1212 m_state.ready_flags[slot].store(true, std::memory_order_release);
1213
1214 return true;
1215 }
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 >::push().

+ Here is the caller graph for this function: