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

◆ pop()

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

Pop element from buffer.

Returns
Element if available, nullopt if empty

Behavior by AccessPattern:

Thread Safety:

while (auto value = buffer.pop()) {
process(*value); // Process oldest data first
}

Definition at line 750 of file RingBuffer.hpp.

751 {
752 if constexpr (is_lock_free) {
753 return pop_lockfree();
754 } else {
755 return pop_singlethread();
756 }
757 }
std::optional< T > pop_singlethread() noexcept
static constexpr bool is_lock_free
std::optional< T > pop_lockfree() noexcept

References MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::is_lock_free, MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::pop_lockfree(), and MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::pop_singlethread().

+ Here is the call graph for this function: