MayaFlux 0.2.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 723 of file RingBuffer.hpp.

724 {
725 if constexpr (is_lock_free) {
726 return push_lockfree(value);
727 } else {
728 return push_singlethread(value);
729 }
730 }
bool push_lockfree(const T &value) noexcept
static constexpr bool is_lock_free
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 >::push_lockfree(), and MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::push_singlethread().

+ Here is the call graph for this function: