CARLA
 
载入中...
搜索中...
未找到
命名空间 | | 枚举 | 函数 | 变量
moodycamel 命名空间参考

命名空间

namespace  details
 

struct  Block
 
class  BlockingConcurrentQueue
 
class  ConcurrentQueue
 
struct  ConcurrentQueueDefaultTraits
 
struct  ConsumerToken
 
struct  ExplicitProducer
 
struct  FreeList
 
struct  FreeListNode
 
struct  ImplicitProducer
 
struct  ImplicitProducerHash
 
struct  ImplicitProducerKVP
 
struct  ProducerBase
 
struct  ProducerToken
 

枚举

enum  AllocationMode { CanAlloc , CannotAlloc }
 
enum  InnerQueueContext { implicit_context = 0 , explicit_context = 1 }
 

函数

void add_block_to_free_list (Block *block)
 
void add_blocks_to_free_list (Block *block)
 
ProducerBaseadd_producer (ProducerBase *producer)
 
template<typename U >
static U * create ()
 
template<typename U , typename A1 >
static U * create (A1 &&a1)
 
template<typename U >
static U * create_array (size_t count)
 
template<typename U >
static void destroy (U *p)
 
template<typename U >
static void destroy_array (U *p, size_t count)
 
ImplicitProducerget_or_add_implicit_producer ()
 
template<AllocationMode canAlloc, typename U >
bool inner_enqueue (producer_token_t const &token, U &&element)
 
template<AllocationMode canAlloc, typename U >
bool inner_enqueue (U &&element)
 
template<AllocationMode canAlloc, typename It >
bool inner_enqueue_bulk (It itemFirst, size_t count)
 
template<AllocationMode canAlloc, typename It >
bool inner_enqueue_bulk (producer_token_t const &token, It itemFirst, size_t count)
 
static bool is_lock_free ()
 
void populate_initial_block_list (size_t blockCount)
 
void populate_initial_implicit_producer_hash ()
 
ProducerBaserecycle_or_create_producer (bool isExplicit)
 
ProducerBaserecycle_or_create_producer (bool isExplicit, bool &recycled)
 
void reown_producers ()
 
template<AllocationMode canAlloc>
Blockrequisition_block ()
 
size_t size_approx () const
 
template<typename T , typename Traits >
void swap (typename ConcurrentQueue< T, Traits >::ImplicitProducerKVP &a, typename ConcurrentQueue< T, Traits >::ImplicitProducerKVP &b) MOODYCAMEL_NOEXCEPT
 
void swap_implicit_producer_hashes (ConcurrentQueue &other)
 
template<typename T , typename Traits = ConcurrentQueueDefaultTraits>
class moodycamel::ConcurrentQueue try_dequeue_bulk_from_producer (producer_token_t const &producer, It itemFirst, size_t max)
 
Blocktry_get_block_from_free_list ()
 
Blocktry_get_block_from_initial_pool ()
 
bool update_current_producer_after_rotation (consumer_token_t &token)
 

变量

FreeList< BlockfreeList
 
std::atomic< std::uint32_t > globalExplicitConsumerOffset
 
std::atomic< ImplicitProducerHash * > implicitProducerHash
 
std::atomic< size_timplicitProducerHashCount
 
std::atomic_flag implicitProducerHashResizeInProgress
 
BlockinitialBlockPool
 
std::atomic< size_tinitialBlockPoolIndex
 
size_t initialBlockPoolSize
 
ImplicitProducerHash initialImplicitProducerHash
 
std::array< ImplicitProducerKVP, INITIAL_IMPLICIT_PRODUCER_HASH_SIZEinitialImplicitProducerHashEntries
 
std::atomic< std::uint32_t > nextExplicitConsumerId
 
std::atomic< std::uint32_t > producerCount
 
std::atomic< ProducerBase * > producerListTail
 
enum moodycamel::AllocationMode try_dequeue_bulk_from_producer
 

枚举类型说明

◆ AllocationMode

枚举值
CanAlloc 
CannotAlloc 

在文件 ConcurrentQueue.h1394 行定义.

◆ InnerQueueContext

枚举值
implicit_context 
explicit_context 

在文件 ConcurrentQueue.h1596 行定义.

函数说明

◆ add_block_to_free_list()

void moodycamel::add_block_to_free_list ( Block * block)
inlineprivate

在文件 ConcurrentQueue.h3086 行定义.

引用了 freeList.

被这些函数引用 add_blocks_to_free_list().

+ 这是这个函数的调用关系图:

◆ add_blocks_to_free_list()

void moodycamel::add_blocks_to_free_list ( Block * block)
inlineprivate

在文件 ConcurrentQueue.h3094 行定义.

引用了 add_block_to_free_list() , 以及 moodycamel::Block::next.

+ 函数调用图:

◆ add_producer()

ProducerBase * moodycamel::add_producer ( ProducerBase * producer)
private

在文件 ConcurrentQueue.h3304 行定义.

引用了 moodycamel::ProducerBase::isExplicit, moodycamel::details::ConcurrentQueueProducerTypelessBase::next, producerCount , 以及 producerListTail.

被这些函数引用 recycle_or_create_producer().

+ 这是这个函数的调用关系图:

◆ create() [1/2]

template<typename U >
static U * moodycamel::create ( )
inlinestaticprivate

在文件 ConcurrentQueue.h3663 行定义.

◆ create() [2/2]

template<typename U , typename A1 >
static U * moodycamel::create ( A1 && a1)
inlinestaticprivate

在文件 ConcurrentQueue.h3670 行定义.

◆ create_array()

template<typename U >
static U * moodycamel::create_array ( size_t count)
inlinestaticprivate

在文件 ConcurrentQueue.h3636 行定义.

◆ destroy()

template<typename U >
static void moodycamel::destroy ( U * p)
inlinestaticprivate

在文件 ConcurrentQueue.h3677 行定义.

被这些函数引用 moodycamel::ConcurrentQueue< T, Traits >::~ConcurrentQueue().

+ 这是这个函数的调用关系图:

◆ destroy_array()

template<typename U >
static void moodycamel::destroy_array ( U * p,
size_t count )
inlinestaticprivate

在文件 ConcurrentQueue.h3651 行定义.

被这些函数引用 moodycamel::ConcurrentQueue< T, Traits >::~ConcurrentQueue().

+ 这是这个函数的调用关系图:

◆ get_or_add_implicit_producer()

ImplicitProducer * moodycamel::get_or_add_implicit_producer ( )
private

在文件 ConcurrentQueue.h3439 行定义.

引用了 moodycamel::ImplicitProducerHash::capacity, moodycamel::ImplicitProducerHash::entries, moodycamel::details::hash_thread_id(), implicitProducerHash, implicitProducerHashCount, implicitProducerHashResizeInProgress, moodycamel::details::ConcurrentQueueProducerTypelessBase::inactive, moodycamel::details::invalid_thread_id, moodycamel::details::invalid_thread_id2, moodycamel::ImplicitProducerKVP::key, moodycamel::ProducerBase::parent, recycle_or_create_producer() , 以及 moodycamel::details::thread_id().

被这些函数引用 inner_enqueue() , 以及 inner_enqueue_bulk().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ inner_enqueue() [1/2]

template<AllocationMode canAlloc, typename U >
bool moodycamel::inner_enqueue ( producer_token_t const & token,
U && element )
inlineprivate

在文件 ConcurrentQueue.h1402 行定义.

◆ inner_enqueue() [2/2]

template<AllocationMode canAlloc, typename U >
bool moodycamel::inner_enqueue ( U && element)
inlineprivate

在文件 ConcurrentQueue.h1410 行定义.

引用了 get_or_add_implicit_producer().

+ 函数调用图:

◆ inner_enqueue_bulk() [1/2]

template<AllocationMode canAlloc, typename It >
bool moodycamel::inner_enqueue_bulk ( It itemFirst,
size_t count )
inlineprivate

在文件 ConcurrentQueue.h1423 行定义.

引用了 get_or_add_implicit_producer().

+ 函数调用图:

◆ inner_enqueue_bulk() [2/2]

template<AllocationMode canAlloc, typename It >
bool moodycamel::inner_enqueue_bulk ( producer_token_t const & token,
It itemFirst,
size_t count )
inlineprivate

在文件 ConcurrentQueue.h1417 行定义.

引用了 moodycamel::ProducerToken::producer.

◆ is_lock_free()

static bool moodycamel::is_lock_free ( )
static

在文件 ConcurrentQueue.h1371 行定义.

◆ populate_initial_block_list()

void moodycamel::populate_initial_block_list ( size_t blockCount)
private

在文件 ConcurrentQueue.h3058 行定义.

引用了 moodycamel::Block::dynamicallyAllocated, initialBlockPool , 以及 initialBlockPoolSize.

被这些函数引用 moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue() , 以及 moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue().

+ 这是这个函数的调用关系图:

◆ populate_initial_implicit_producer_hash()

void moodycamel::populate_initial_implicit_producer_hash ( )
inlineprivate

◆ recycle_or_create_producer() [1/2]

ProducerBase * moodycamel::recycle_or_create_producer ( bool isExplicit)
private

在文件 ConcurrentQueue.h3277 行定义.

引用了 recycle_or_create_producer().

被这些函数引用 get_or_add_implicit_producer() , 以及 recycle_or_create_producer().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ recycle_or_create_producer() [2/2]

ProducerBase * moodycamel::recycle_or_create_producer ( bool isExplicit,
bool & recycled )
private

在文件 ConcurrentQueue.h3283 行定义.

引用了 add_producer() , 以及 producerListTail.

+ 函数调用图:

◆ reown_producers()

void moodycamel::reown_producers ( )
private

在文件 ConcurrentQueue.h3337 行定义.

引用了 moodycamel::ProducerBase::parent , 以及 producerListTail.

被这些函数引用 moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue() , 以及 moodycamel::ConcurrentQueue< T, Traits >::swap_internal().

+ 这是这个函数的调用关系图:

◆ requisition_block()

template<AllocationMode canAlloc>
Block * moodycamel::requisition_block ( )
private

在文件 ConcurrentQueue.h3110 行定义.

引用了 CanAlloc, try_get_block_from_free_list() , 以及 try_get_block_from_initial_pool().

+ 函数调用图:

◆ size_approx()

size_t moodycamel::size_approx ( ) const

在文件 ConcurrentQueue.h1355 行定义.

◆ swap()

template<typename T , typename Traits >
void moodycamel::swap ( typename ConcurrentQueue< T, Traits >::ImplicitProducerKVP & a,
typename ConcurrentQueue< T, Traits >::ImplicitProducerKVP & b )
inline

◆ swap_implicit_producer_hashes()

void moodycamel::swap_implicit_producer_hashes ( ConcurrentQueue & other)
private

在文件 ConcurrentQueue.h3404 行定义.

引用了 moodycamel::ImplicitProducerHash::entries, implicitProducerHash, implicitProducerHashCount, INITIAL_IMPLICIT_PRODUCER_HASH_SIZE, initialImplicitProducerHash, initialImplicitProducerHashEntries, moodycamel::ImplicitProducerHash::prev , 以及 moodycamel::details::swap_relaxed().

被这些函数引用 moodycamel::ConcurrentQueue< T, Traits >::ConcurrentQueue() , 以及 moodycamel::ConcurrentQueue< T, Traits >::swap_internal().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ try_dequeue_bulk_from_producer()

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

在文件 ConcurrentQueue.h743 行定义.

◆ try_get_block_from_free_list()

Block * moodycamel::try_get_block_from_free_list ( )
inlineprivate

在文件 ConcurrentQueue.h3103 行定义.

引用了 freeList.

被这些函数引用 requisition_block().

+ 这是这个函数的调用关系图:

◆ try_get_block_from_initial_pool()

Block * moodycamel::try_get_block_from_initial_pool ( )
inlineprivate

在文件 ConcurrentQueue.h3075 行定义.

引用了 initialBlockPool, initialBlockPoolIndex , 以及 initialBlockPoolSize.

被这些函数引用 requisition_block().

+ 这是这个函数的调用关系图:

◆ update_current_producer_after_rotation()

bool moodycamel::update_current_producer_after_rotation ( consumer_token_t & token)
inlineprivate

在文件 ConcurrentQueue.h1429 行定义.

引用了 moodycamel::ConsumerToken::desiredProducer, globalExplicitConsumerOffset, moodycamel::ConsumerToken::initialOffset, moodycamel::ConsumerToken::lastKnownGlobalOffset, producerCount, producerListTail , 以及 moodycamel::details::unlikely().

被这些函数引用 moodycamel::ConcurrentQueue< T, Traits >::try_dequeue() , 以及 moodycamel::ConcurrentQueue< T, Traits >::try_dequeue_bulk().

+ 函数调用图:
+ 这是这个函数的调用关系图:

变量说明

◆ freeList

FreeList<Block> moodycamel::freeList
private

◆ globalExplicitConsumerOffset

std::atomic<std::uint32_t> moodycamel::globalExplicitConsumerOffset
private

◆ implicitProducerHash

std::atomic<ImplicitProducerHash*> moodycamel::implicitProducerHash
private

◆ implicitProducerHashCount

std::atomic<size_t> moodycamel::implicitProducerHashCount
private

◆ implicitProducerHashResizeInProgress

std::atomic_flag moodycamel::implicitProducerHashResizeInProgress
private

◆ initialBlockPool

Block* moodycamel::initialBlockPool
private

◆ initialBlockPoolIndex

std::atomic<size_t> moodycamel::initialBlockPoolIndex
private

◆ initialBlockPoolSize

size_t moodycamel::initialBlockPoolSize
private

◆ initialImplicitProducerHash

ImplicitProducerHash moodycamel::initialImplicitProducerHash
private

在文件 ConcurrentQueue.h3701 行定义.

被这些函数引用 populate_initial_implicit_producer_hash() , 以及 swap_implicit_producer_hashes().

◆ initialImplicitProducerHashEntries

std::array<ImplicitProducerKVP, INITIAL_IMPLICIT_PRODUCER_HASH_SIZE> moodycamel::initialImplicitProducerHashEntries
private

在文件 ConcurrentQueue.h3702 行定义.

被这些函数引用 populate_initial_implicit_producer_hash() , 以及 swap_implicit_producer_hashes().

◆ nextExplicitConsumerId

std::atomic<std::uint32_t> moodycamel::nextExplicitConsumerId
private

◆ producerCount

std::atomic<std::uint32_t> moodycamel::producerCount
private

◆ producerListTail

std::atomic<ProducerBase*> moodycamel::producerListTail
private

◆ try_dequeue_bulk_from_producer

enum moodycamel::AllocationMode moodycamel::try_dequeue_bulk_from_producer
private