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

◆ push()

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

Push element into buffer.

Parameters
valueElement to insert
Returns
true if successful, false if buffer full

Behavior by AccessPattern:

Thread Safety:

RingBuffer<double, ...> buffer;
if (!buffer.push(42.0)) {
// Buffer full, oldest data still present
}
Policy-driven unified circular buffer implementation.

Definition at line 806 of file RingBuffer.hpp.

807 {
808 if constexpr (is_mpsc) {
809 return push_mpsc(value);
810 } else if constexpr (is_lock_free) {
811 return push_lockfree(value);
812 } else {
813 return push_singlethread(value);
814 }
815 }
float value
bool push_mpsc(const T &value) noexcept
bool push_lockfree(const T &value) noexcept
static constexpr bool is_lock_free
static constexpr bool is_mpsc
bool push_singlethread(const T &value) noexcept

References MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::is_lock_free, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::is_mpsc, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::push_lockfree(), MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::push_mpsc(), MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::push_singlethread(), and value.

+ Here is the call graph for this function: