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)
 
ProducerBase * add_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)
 
ImplicitProducer * get_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 ()
 
ProducerBase * recycle_or_create_producer (bool isExplicit)
 
ProducerBase * recycle_or_create_producer (bool isExplicit, bool &recycled)
 
void reown_producers ()
 
template<AllocationMode canAlloc>
Block * requisition_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)
 
Block * try_get_block_from_free_list ()
 
Block * try_get_block_from_initial_pool ()
 
bool update_current_producer_after_rotation (consumer_token_t &token)
 

变量

FreeList< Block > freeList
 
std::atomic< std::uint32_t > globalExplicitConsumerOffset
 
std::atomic< ImplicitProducerHash * > implicitProducerHash
 
std::atomic< size_t > implicitProducerHashCount
 
std::atomic_flag implicitProducerHashResizeInProgress
 
Block * initialBlockPool
 
std::atomic< size_t > initialBlockPoolIndex
 
size_t initialBlockPoolSize
 
ImplicitProducerHash initialImplicitProducerHash
 
std::array< ImplicitProducerKVP, INITIAL_IMPLICIT_PRODUCER_HASH_SIZE > initialImplicitProducerHashEntries
 
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.h 第 1394 行定义.

◆ InnerQueueContext

枚举值
implicit_context 
explicit_context 

在文件 ConcurrentQueue.h 第 1596 行定义.

函数说明

◆ add_block_to_free_list()

void moodycamel::add_block_to_free_list ( Block *  block)
inlineprivate

在文件 ConcurrentQueue.h 第 3086 行定义.

引用了 freeList.

被这些函数引用 add_blocks_to_free_list().

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

◆ add_blocks_to_free_list()

void moodycamel::add_blocks_to_free_list ( Block *  block)
inlineprivate

在文件 ConcurrentQueue.h 第 3094 行定义.

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

+ 函数调用图:

◆ add_producer()

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

在文件 ConcurrentQueue.h 第 3304 行定义.

引用了 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.h 第 3663 行定义.

◆ create() [2/2]

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

在文件 ConcurrentQueue.h 第 3670 行定义.

◆ create_array()

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

在文件 ConcurrentQueue.h 第 3636 行定义.

◆ destroy()

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

在文件 ConcurrentQueue.h 第 3677 行定义.

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

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

◆ destroy_array()

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

在文件 ConcurrentQueue.h 第 3651 行定义.

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

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

◆ get_or_add_implicit_producer()

ImplicitProducer * moodycamel::get_or_add_implicit_producer ( )
private

在文件 ConcurrentQueue.h 第 3439 行定义.

引用了 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.h 第 1402 行定义.

◆ inner_enqueue() [2/2]

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

在文件 ConcurrentQueue.h 第 1410 行定义.

引用了 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.h 第 1423 行定义.

引用了 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.h 第 1417 行定义.

引用了 moodycamel::ProducerToken::producer.

◆ is_lock_free()

static bool moodycamel::is_lock_free ( )
static

在文件 ConcurrentQueue.h 第 1371 行定义.

◆ populate_initial_block_list()

void moodycamel::populate_initial_block_list ( size_t  blockCount)
private

在文件 ConcurrentQueue.h 第 3058 行定义.

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

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

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

◆ populate_initial_implicit_producer_hash()

void moodycamel::populate_initial_implicit_producer_hash ( )
inlineprivate

在文件 ConcurrentQueue.h 第 3389 行定义.

引用了 moodycamel::ImplicitProducerHash::capacity, implicitProducerHash, implicitProducerHashCount, INITIAL_IMPLICIT_PRODUCER_HASH_SIZE, initialImplicitProducerHash, initialImplicitProducerHashEntries , 以及 moodycamel::details::invalid_thread_id.

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

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

◆ recycle_or_create_producer() [1/2]

ProducerBase * moodycamel::recycle_or_create_producer ( bool  isExplicit)
private

在文件 ConcurrentQueue.h 第 3277 行定义.

引用了 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.h 第 3283 行定义.

引用了 add_producer() , 以及 producerListTail.

+ 函数调用图:

◆ reown_producers()

void moodycamel::reown_producers ( )
private

在文件 ConcurrentQueue.h 第 3337 行定义.

引用了 producerListTail.

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

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

◆ requisition_block()

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

在文件 ConcurrentQueue.h 第 3110 行定义.

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

+ 函数调用图:

◆ size_approx()

size_t moodycamel::size_approx ( ) const

在文件 ConcurrentQueue.h 第 1355 行定义.

◆ 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.h 第 3404 行定义.

引用了 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.h 第 743 行定义.

◆ try_get_block_from_free_list()

Block * moodycamel::try_get_block_from_free_list ( )
inlineprivate

在文件 ConcurrentQueue.h 第 3103 行定义.

引用了 freeList.

被这些函数引用 requisition_block().

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

◆ try_get_block_from_initial_pool()

Block * moodycamel::try_get_block_from_initial_pool ( )
inlineprivate

在文件 ConcurrentQueue.h 第 3075 行定义.

引用了 initialBlockPool, initialBlockPoolIndex , 以及 initialBlockPoolSize.

被这些函数引用 requisition_block().

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

◆ update_current_producer_after_rotation()

bool moodycamel::update_current_producer_after_rotation ( consumer_token_t &  token)
inlineprivate

在文件 ConcurrentQueue.h 第 1429 行定义.

引用了 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.h 第 3701 行定义.

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

◆ initialImplicitProducerHashEntries

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

在文件 ConcurrentQueue.h 第 3702 行定义.

被这些函数引用 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