Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::runtime::RealtimeResourceSlot< T, RetireCapacity > Class Template Reference

Control-thread owner for resources prepared off the audio thread and read from the audio thread through an atomic raw pointer. More...

#include <background_job.hpp>

Public Member Functions

 RealtimeResourceSlot ()=default
 ~RealtimeResourceSlot ()
 RealtimeResourceSlot (const RealtimeResourceSlot &)=delete
RealtimeResourceSlot & operator= (const RealtimeResourceSlot &)=delete
const T * get () const noexcept
bool publish (std::unique_ptr< const T > next)
RealtimeResourceSlotPublishStatus publish_with_status (std::unique_ptr< const T > next)
std::size_t reclaim_retired (std::size_t max_to_reclaim=RetireCapacity)
std::size_t retired_count_approx () const
std::uint64_t retire_overflow_count () const

Detailed Description

template<typename T, std::size_t RetireCapacity>
class pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >

Control-thread owner for resources prepared off the audio thread and read from the audio thread through an atomic raw pointer.

A single non-RT owner serializes publish*() and reclaim_retired(). The audio thread only calls get(), which is a single acquire load and does not allocate, lock, wait, or take ownership. Because get() returns an unpinned raw pointer, the owner must call reclaim_retired() only after a host/block boundary or other grace point proves callbacks that may have loaded an old pointer have left it.

Constructor & Destructor Documentation

◆ RealtimeResourceSlot() [1/2]

template<typename T, std::size_t RetireCapacity>
pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::RealtimeResourceSlot ( )
default

◆ ~RealtimeResourceSlot()

template<typename T, std::size_t RetireCapacity>
pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::~RealtimeResourceSlot ( )
inline

◆ RealtimeResourceSlot() [2/2]

template<typename T, std::size_t RetireCapacity>
pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::RealtimeResourceSlot ( const RealtimeResourceSlot< T, RetireCapacity > & )
delete

Member Function Documentation

◆ get()

template<typename T, std::size_t RetireCapacity>
const T * pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::get ( ) const
inlinenoexcept

◆ operator=()

template<typename T, std::size_t RetireCapacity>
RealtimeResourceSlot & pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::operator= ( const RealtimeResourceSlot< T, RetireCapacity > & )
delete

◆ publish()

template<typename T, std::size_t RetireCapacity>
bool pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::publish ( std::unique_ptr< const T > next)
inlinenodiscard

◆ publish_with_status()

template<typename T, std::size_t RetireCapacity>
RealtimeResourceSlotPublishStatus pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::publish_with_status ( std::unique_ptr< const T > next)
inlinenodiscard

◆ reclaim_retired()

template<typename T, std::size_t RetireCapacity>
std::size_t pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::reclaim_retired ( std::size_t max_to_reclaim = RetireCapacity)
inline

◆ retire_overflow_count()

template<typename T, std::size_t RetireCapacity>
std::uint64_t pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::retire_overflow_count ( ) const
inline

◆ retired_count_approx()

template<typename T, std::size_t RetireCapacity>
std::size_t pulp::runtime::RealtimeResourceSlot< T, RetireCapacity >::retired_count_approx ( ) const
inline

The documentation for this class was generated from the following file: