Unravel Engine C++ Reference
Loading...
Searching...
No Matches
moodycamel::ConcurrentQueue< T, Traits > Class Template Reference

#include <concurrentqueue.h>

Public Types

typedef ::moodycamel::ProducerToken producer_token_t
 
typedef ::moodycamel::ConsumerToken consumer_token_t
 
typedef Traits::index_t index_t
 
typedef Traits::size_t size_t
 

Public Member Functions

 ConcurrentQueue (size_t capacity=32 *BLOCK_SIZE)
 
 ConcurrentQueue (size_t minCapacity, size_t maxExplicitProducers, size_t maxImplicitProducers)
 
 ~ConcurrentQueue ()
 
 ConcurrentQueue (ConcurrentQueue const &) MOODYCAMEL_DELETE_FUNCTION
 
ConcurrentQueueoperator= (ConcurrentQueue const &) MOODYCAMEL_DELETE_FUNCTION
 
 ConcurrentQueue (ConcurrentQueue &&other) MOODYCAMEL_NOEXCEPT
 
ConcurrentQueueoperator= (ConcurrentQueue &&other) MOODYCAMEL_NOEXCEPT
 
void swap (ConcurrentQueue &other) MOODYCAMEL_NOEXCEPT
 
bool enqueue (T const &item)
 
bool enqueue (T &&item)
 
bool enqueue (producer_token_t const &token, T const &item)
 
bool enqueue (producer_token_t const &token, T &&item)
 
template<typename It >
bool enqueue_bulk (It itemFirst, size_t count)
 
template<typename It >
bool enqueue_bulk (producer_token_t const &token, It itemFirst, size_t count)
 
bool try_enqueue (T const &item)
 
bool try_enqueue (T &&item)
 
bool try_enqueue (producer_token_t const &token, T const &item)
 
bool try_enqueue (producer_token_t const &token, T &&item)
 
template<typename It >
bool try_enqueue_bulk (It itemFirst, size_t count)
 
template<typename It >
bool try_enqueue_bulk (producer_token_t const &token, It itemFirst, size_t count)
 
template<typename U >
bool try_dequeue (U &item)
 
template<typename U >
bool try_dequeue_non_interleaved (U &item)
 
template<typename U >
bool try_dequeue (consumer_token_t &token, U &item)
 
template<typename It >
size_t try_dequeue_bulk (It itemFirst, size_t max)
 
template<typename It >
size_t try_dequeue_bulk (consumer_token_t &token, It itemFirst, size_t max)
 
template<typename U >
bool try_dequeue_from_producer (producer_token_t const &producer, U &item)
 
template<typename It >
size_t try_dequeue_bulk_from_producer (producer_token_t const &producer, It itemFirst, size_t max)
 
size_t size_approx () const
 

Static Public Member Functions

static constexpr bool is_lock_free ()
 

Static Public Attributes

static const size_t BLOCK_SIZE = static_cast<size_t>(Traits::BLOCK_SIZE)
 
static const size_t EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = static_cast<size_t>(Traits::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD)
 
static const size_t EXPLICIT_INITIAL_INDEX_SIZE = static_cast<size_t>(Traits::EXPLICIT_INITIAL_INDEX_SIZE)
 
static const size_t IMPLICIT_INITIAL_INDEX_SIZE = static_cast<size_t>(Traits::IMPLICIT_INITIAL_INDEX_SIZE)
 
static const size_t INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = static_cast<size_t>(Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE)
 
static const std::uint32_t EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = static_cast<std::uint32_t>(Traits::EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE)
 
static const size_t MAX_SUBQUEUE_SIZE = (details::const_numeric_max<size_t>::value - static_cast<size_t>(Traits::MAX_SUBQUEUE_SIZE) < BLOCK_SIZE) ? details::const_numeric_max<size_t>::value : ((static_cast<size_t>(Traits::MAX_SUBQUEUE_SIZE) + (BLOCK_SIZE - 1)) / BLOCK_SIZE * BLOCK_SIZE)
 

Friends

struct ProducerToken
 
struct ConsumerToken
 
struct ExplicitProducer
 
struct ImplicitProducer
 
class ConcurrentQueueTests
 
template<typename XT , typename XTraits >
void moodycamel::swap (typename ConcurrentQueue< XT, XTraits >::ImplicitProducerKVP &, typename ConcurrentQueue< XT, XTraits >::ImplicitProducerKVP &) MOODYCAMEL_NOEXCEPT
 

Detailed Description

template<typename T, typename Traits = ConcurrentQueueDefaultTraits>
class moodycamel::ConcurrentQueue< T, Traits >

Definition at line 767 of file concurrentqueue.h.

Member Typedef Documentation

◆ consumer_token_t

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
::moodycamel::ConsumerToken moodycamel::ConcurrentQueue< T, Traits >::consumer_token_t

Definition at line 771 of file concurrentqueue.h.

◆ index_t

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
Traits::index_t moodycamel::ConcurrentQueue< T, Traits >::index_t

Definition at line 773 of file concurrentqueue.h.

◆ producer_token_t

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
::moodycamel::ProducerToken moodycamel::ConcurrentQueue< T, Traits >::producer_token_t

Definition at line 770 of file concurrentqueue.h.

◆ size_t

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

Definition at line 774 of file concurrentqueue.h.

Constructor & Destructor Documentation

◆ ConcurrentQueue() [1/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue ( size_t capacity = 32 * BLOCK_SIZE)
inlineexplicit

Definition at line 813 of file concurrentqueue.h.

◆ ConcurrentQueue() [2/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue ( size_t minCapacity,
size_t maxExplicitProducers,
size_t maxImplicitProducers )
inline

Definition at line 837 of file concurrentqueue.h.

◆ ~ConcurrentQueue()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::~ConcurrentQueue ( )
inline

Definition at line 858 of file concurrentqueue.h.

◆ ConcurrentQueue() [3/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue ( ConcurrentQueue< T, Traits > const & )

◆ ConcurrentQueue() [4/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue ( ConcurrentQueue< T, Traits > && other)
inline

Definition at line 911 of file concurrentqueue.h.

Member Function Documentation

◆ enqueue() [1/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::enqueue ( producer_token_t const & token,
T && item )
inline

Definition at line 1025 of file concurrentqueue.h.

◆ enqueue() [2/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::enqueue ( producer_token_t const & token,
T const & item )
inline

Definition at line 1016 of file concurrentqueue.h.

◆ enqueue() [3/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::enqueue ( T && item)
inline

Definition at line 1006 of file concurrentqueue.h.

◆ enqueue() [4/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::enqueue ( T const & item)
inline

Definition at line 995 of file concurrentqueue.h.

◆ enqueue_bulk() [1/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
bool moodycamel::ConcurrentQueue< T, Traits >::enqueue_bulk ( It itemFirst,
size_t count )
inline

Definition at line 1037 of file concurrentqueue.h.

◆ enqueue_bulk() [2/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
bool moodycamel::ConcurrentQueue< T, Traits >::enqueue_bulk ( producer_token_t const & token,
It itemFirst,
size_t count )
inline

Definition at line 1050 of file concurrentqueue.h.

◆ is_lock_free()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
static constexpr bool moodycamel::ConcurrentQueue< T, Traits >::is_lock_free ( )
inlinestaticconstexpr

Definition at line 1338 of file concurrentqueue.h.

◆ operator=() [1/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
ConcurrentQueue & moodycamel::ConcurrentQueue< T, Traits >::operator= ( ConcurrentQueue< T, Traits > && other)
inline

Definition at line 945 of file concurrentqueue.h.

◆ operator=() [2/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
ConcurrentQueue & moodycamel::ConcurrentQueue< T, Traits >::operator= ( ConcurrentQueue< T, Traits > const & )

◆ size_approx()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
size_t moodycamel::ConcurrentQueue< T, Traits >::size_approx ( ) const
inline

Definition at line 1325 of file concurrentqueue.h.

◆ swap()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
void moodycamel::ConcurrentQueue< T, Traits >::swap ( ConcurrentQueue< T, Traits > & other)
inline

Definition at line 955 of file concurrentqueue.h.

◆ try_dequeue() [1/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename U >
bool moodycamel::ConcurrentQueue< T, Traits >::try_dequeue ( consumer_token_t & token,
U & item )
inline

Definition at line 1183 of file concurrentqueue.h.

◆ try_dequeue() [2/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename U >
bool moodycamel::ConcurrentQueue< T, Traits >::try_dequeue ( U & item)
inline

Definition at line 1125 of file concurrentqueue.h.

◆ try_dequeue_bulk() [1/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
size_t moodycamel::ConcurrentQueue< T, Traits >::try_dequeue_bulk ( consumer_token_t & token,
It itemFirst,
size_t max )
inline

Definition at line 1249 of file concurrentqueue.h.

◆ try_dequeue_bulk() [2/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
size_t moodycamel::ConcurrentQueue< T, Traits >::try_dequeue_bulk ( It itemFirst,
size_t max )
inline

Definition at line 1231 of file concurrentqueue.h.

◆ try_dequeue_bulk_from_producer()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
size_t moodycamel::ConcurrentQueue< T, Traits >::try_dequeue_bulk_from_producer ( producer_token_t const & producer,
It itemFirst,
size_t max )
inline

Definition at line 1313 of file concurrentqueue.h.

◆ try_dequeue_from_producer()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename U >
bool moodycamel::ConcurrentQueue< T, Traits >::try_dequeue_from_producer ( producer_token_t const & producer,
U & item )
inline

Definition at line 1300 of file concurrentqueue.h.

◆ try_dequeue_non_interleaved()

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename U >
bool moodycamel::ConcurrentQueue< T, Traits >::try_dequeue_non_interleaved ( U & item)
inline

Definition at line 1168 of file concurrentqueue.h.

◆ try_enqueue() [1/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::try_enqueue ( producer_token_t const & token,
T && item )
inline

Definition at line 1088 of file concurrentqueue.h.

◆ try_enqueue() [2/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::try_enqueue ( producer_token_t const & token,
T const & item )
inline

Definition at line 1080 of file concurrentqueue.h.

◆ try_enqueue() [3/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::try_enqueue ( T && item)
inline

Definition at line 1071 of file concurrentqueue.h.

◆ try_enqueue() [4/4]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
bool moodycamel::ConcurrentQueue< T, Traits >::try_enqueue ( T const & item)
inline

Definition at line 1060 of file concurrentqueue.h.

◆ try_enqueue_bulk() [1/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
bool moodycamel::ConcurrentQueue< T, Traits >::try_enqueue_bulk ( It itemFirst,
size_t count )
inline

Definition at line 1101 of file concurrentqueue.h.

◆ try_enqueue_bulk() [2/2]

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename It >
bool moodycamel::ConcurrentQueue< T, Traits >::try_enqueue_bulk ( producer_token_t const & token,
It itemFirst,
size_t count )
inline

Definition at line 1113 of file concurrentqueue.h.

Friends And Related Symbol Documentation

◆ ConcurrentQueueTests

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
friend class ConcurrentQueueTests
friend

Definition at line 1357 of file concurrentqueue.h.

◆ ConsumerToken

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
friend struct ConsumerToken
friend

Definition at line 1352 of file concurrentqueue.h.

◆ ExplicitProducer

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
friend struct ExplicitProducer
friend

Definition at line 1354 of file concurrentqueue.h.

◆ ImplicitProducer

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
friend struct ImplicitProducer
friend

Definition at line 1356 of file concurrentqueue.h.

◆ moodycamel::swap

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
template<typename XT , typename XTraits >
void moodycamel::swap ( typename ConcurrentQueue< XT, XTraits >::ImplicitProducerKVP & ,
typename ConcurrentQueue< XT, XTraits >::ImplicitProducerKVP &  )
friend

◆ ProducerToken

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
friend struct ProducerToken
friend

Definition at line 1351 of file concurrentqueue.h.

Member Data Documentation

◆ BLOCK_SIZE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const size_t moodycamel::ConcurrentQueue< T, Traits >::BLOCK_SIZE = static_cast<size_t>(Traits::BLOCK_SIZE)
static

Definition at line 776 of file concurrentqueue.h.

◆ EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const size_t moodycamel::ConcurrentQueue< T, Traits >::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = static_cast<size_t>(Traits::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD)
static

Definition at line 777 of file concurrentqueue.h.

◆ EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const std::uint32_t moodycamel::ConcurrentQueue< T, Traits >::EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = static_cast<std::uint32_t>(Traits::EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE)
static

Definition at line 781 of file concurrentqueue.h.

◆ EXPLICIT_INITIAL_INDEX_SIZE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const size_t moodycamel::ConcurrentQueue< T, Traits >::EXPLICIT_INITIAL_INDEX_SIZE = static_cast<size_t>(Traits::EXPLICIT_INITIAL_INDEX_SIZE)
static

Definition at line 778 of file concurrentqueue.h.

◆ IMPLICIT_INITIAL_INDEX_SIZE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const size_t moodycamel::ConcurrentQueue< T, Traits >::IMPLICIT_INITIAL_INDEX_SIZE = static_cast<size_t>(Traits::IMPLICIT_INITIAL_INDEX_SIZE)
static

Definition at line 779 of file concurrentqueue.h.

◆ INITIAL_IMPLICIT_PRODUCER_HASH_SIZE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const size_t moodycamel::ConcurrentQueue< T, Traits >::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = static_cast<size_t>(Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE)
static

Definition at line 780 of file concurrentqueue.h.

◆ MAX_SUBQUEUE_SIZE

template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
const size_t moodycamel::ConcurrentQueue< T, Traits >::MAX_SUBQUEUE_SIZE = (details::const_numeric_max<size_t>::value - static_cast<size_t>(Traits::MAX_SUBQUEUE_SIZE) < BLOCK_SIZE) ? details::const_numeric_max<size_t>::value : ((static_cast<size_t>(Traits::MAX_SUBQUEUE_SIZE) + (BLOCK_SIZE - 1)) / BLOCK_SIZE * BLOCK_SIZE)
static

Definition at line 787 of file concurrentqueue.h.


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