Agora  1.2.0
Agora project
moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer Struct Reference
Inheritance diagram for moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer:
Collaboration diagram for moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer:

Classes

struct  BlockIndexEntry
 
struct  BlockIndexHeader
 

Public Member Functions

 ImplicitProducer (ConcurrentQueue *parent_)
 
 ~ImplicitProducer ()
 
template<AllocationMode allocMode, typename U >
bool enqueue (U &&element)
 
template<typename U >
bool dequeue (U &element)
 
template<AllocationMode allocMode, typename It >
bool enqueue_bulk (It itemFirst, size_t count)
 
template<typename It >
size_t dequeue_bulk (It &itemFirst, size_t max)
 
- Public Member Functions inherited from moodycamel::ConcurrentQueue< T, Traits >::ProducerBase
 ProducerBase (ConcurrentQueue *parent_, bool isExplicit_)
 
virtual ~ProducerBase ()
 
template<typename U >
bool dequeue (U &element)
 
template<typename It >
size_t dequeue_bulk (It &itemFirst, size_t max)
 
ProducerBasenext_prod () const
 
size_t size_approx () const
 
index_t getTail () const
 
- Public Member Functions inherited from moodycamel::details::ConcurrentQueueProducerTypelessBase
 ConcurrentQueueProducerTypelessBase ()
 

Private Member Functions

template<AllocationMode allocMode>
bool insert_block_index_entry (BlockIndexEntry *&idxEntry, index_t blockStartIndex)
 
void rewind_block_index_tail ()
 
BlockIndexEntryget_block_index_entry_for_index (index_t index) const
 
size_t get_block_index_index_for_index (index_t index, BlockIndexHeader *&localBlockIndex) const
 
bool new_block_index ()
 

Private Attributes

size_t nextBlockIndexCapacity
 
std::atomic< BlockIndexHeader * > blockIndex
 

Static Private Attributes

static const index_t INVALID_BLOCK_BASE = 1
 

Additional Inherited Members

- Public Attributes inherited from moodycamel::ConcurrentQueue< T, Traits >::ProducerBase
bool isExplicit
 
ConcurrentQueueparent
 
- Public Attributes inherited from moodycamel::details::ConcurrentQueueProducerTypelessBase
ConcurrentQueueProducerTypelessBasenext
 
std::atomic< bool > inactive
 
ProducerTokentoken
 
- Protected Attributes inherited from moodycamel::ConcurrentQueue< T, Traits >::ProducerBase
std::atomic< index_ttailIndex
 
std::atomic< index_theadIndex
 
std::atomic< index_tdequeueOptimisticCount
 
std::atomic< index_tdequeueOvercommit
 
BlocktailBlock
 

Constructor & Destructor Documentation

◆ ImplicitProducer()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::ImplicitProducer ( ConcurrentQueue parent_)
inline
Here is the call graph for this function:

◆ ~ImplicitProducer()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::~ImplicitProducer ( )
inline
Here is the call graph for this function:

Member Function Documentation

◆ dequeue()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename U >
bool moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::dequeue ( U &  element)
inline
Here is the call graph for this function:

◆ dequeue_bulk()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
size_t moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::dequeue_bulk ( It &  itemFirst,
size_t  max 
)
inline
Here is the call graph for this function:

◆ enqueue()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<AllocationMode allocMode, typename U >
bool moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::enqueue ( U &&  element)
inline
Here is the call graph for this function:

◆ enqueue_bulk()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<AllocationMode allocMode, typename It >
bool moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::enqueue_bulk ( It  itemFirst,
size_t  count 
)
inline
Here is the call graph for this function:

◆ get_block_index_entry_for_index()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
BlockIndexEntry* moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::get_block_index_entry_for_index ( index_t  index) const
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_block_index_index_for_index()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
size_t moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::get_block_index_index_for_index ( index_t  index,
BlockIndexHeader *&  localBlockIndex 
) const
inlineprivate
Here is the caller graph for this function:

◆ insert_block_index_entry()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<AllocationMode allocMode>
bool moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::insert_block_index_entry ( BlockIndexEntry *&  idxEntry,
index_t  blockStartIndex 
)
inlineprivate
Here is the call graph for this function:

◆ new_block_index()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::new_block_index ( )
inlineprivate
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rewind_block_index_tail()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
void moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::rewind_block_index_tail ( )
inlineprivate
Here is the caller graph for this function:

Member Data Documentation

◆ blockIndex

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
std::atomic<BlockIndexHeader*> moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::blockIndex
private

◆ INVALID_BLOCK_BASE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const index_t moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::INVALID_BLOCK_BASE = 1
staticprivate

◆ nextBlockIndexCapacity

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
size_t moodycamel::ConcurrentQueue< T, Traits >::ImplicitProducer::nextBlockIndexCapacity
private

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