MayaFlux 0.5.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
}
float value

Definition at line 835 of file RingBuffer.hpp.

836 {
837 if constexpr (is_mpsc) {
838 return pop_mpsc();
839 } else if constexpr (is_lock_free) {
840 return pop_lockfree();
841 } else {
842 return pop_singlethread();
843 }
844 }
std::optional< T > pop_singlethread() noexcept
static constexpr bool is_lock_free
std::optional< T > pop_mpsc() noexcept
std::optional< T > pop_lockfree() noexcept
static constexpr bool is_mpsc

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 >::pop_lockfree(), MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::pop_mpsc(), and MayaFlux::Memory::RingBuffer< T, StoragePolicy, ConcurrencyPolicy, AccessPattern >::pop_singlethread().

+ Here is the call graph for this function: