Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Internal representation of a ConcurrentQueue. More...
Public Member Functions | |
micro_queue & | choose (ticket k) |
Static Public Member Functions | |
static size_t | index (ticket k) |
Map ticket to an array index. More... | |
Public Attributes | |
atomic< ticket > | head_counter |
concurrent_monitor | items_avail |
atomic< size_t > | n_invalid_entries |
char | pad1 [NFS_MaxLineSize-((sizeof(atomic< ticket >)+sizeof(concurrent_monitor)+sizeof(atomic< size_t >))&(NFS_MaxLineSize-1))] |
atomic< ticket > | tail_counter |
concurrent_monitor | slots_avail |
char | pad2 [NFS_MaxLineSize-((sizeof(atomic< ticket >)+sizeof(concurrent_monitor))&(NFS_MaxLineSize-1))] |
micro_queue | array [n_queue] |
atomic< unsigned > | abort_counter |
Static Public Attributes | |
static const size_t | n_queue = 8 |
Must be power of 2. More... | |
static const ptrdiff_t | infinite_capacity = ptrdiff_t(~size_t(0)/2) |
Value for effective_capacity that denotes unbounded queue. More... | |
Static Private Attributes | |
static const size_t | phi = 3 |
Approximately n_queue/golden ratio. More... | |
Friends | |
struct | micro_queue |
Internal representation of a ConcurrentQueue.
For efficiency, this class has no constructor. The caller is expected to zero-initialize it.
Definition at line 112 of file concurrent_queue.cpp.
|
inline |
Definition at line 139 of file concurrent_queue.cpp.
References array, and index().
Referenced by tbb::internal::concurrent_queue_base_v3::internal_insert_if_not_full(), tbb::internal::concurrent_queue_base_v3::internal_insert_item(), tbb::internal::concurrent_queue_base_v3::internal_pop(), and tbb::internal::concurrent_queue_base_v3::internal_pop_if_present().
|
inlinestatic |
Map ticket to an array index.
Definition at line 125 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_iterator_base_v3::advance(), choose(), and tbb::internal::concurrent_queue_iterator_rep::get_item().
|
friend |
Definition at line 115 of file concurrent_queue.cpp.
atomic<unsigned> tbb::internal::concurrent_queue_rep::abort_counter |
Definition at line 144 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::internal_abort(), tbb::internal::concurrent_queue_base_v3::internal_assign(), tbb::internal::concurrent_queue_base_v3::internal_insert_item(), and tbb::internal::concurrent_queue_base_v3::internal_pop().
micro_queue tbb::internal::concurrent_queue_rep::array[n_queue] |
Definition at line 137 of file concurrent_queue.cpp.
Referenced by choose(), tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(), tbb::internal::concurrent_queue_iterator_rep::concurrent_queue_iterator_rep(), tbb::internal::concurrent_queue_base_v3::internal_assign(), tbb::internal::concurrent_queue_base_v3::internal_finish_clear(), and tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3().
atomic<ticket> tbb::internal::concurrent_queue_rep::head_counter |
Definition at line 129 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(), tbb::internal::concurrent_queue_base_v3::internal_assign(), tbb::internal::concurrent_queue_base_v3::internal_empty(), tbb::internal::concurrent_queue_base_v3::internal_insert_if_not_full(), tbb::internal::concurrent_queue_base_v3::internal_insert_item(), tbb::internal::concurrent_queue_base_v3::internal_pop(), tbb::internal::concurrent_queue_base_v3::internal_pop_if_present(), and tbb::internal::concurrent_queue_base_v3::internal_size().
|
static |
Value for effective_capacity that denotes unbounded queue.
Definition at line 147 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::internal_set_capacity().
concurrent_monitor tbb::internal::concurrent_queue_rep::items_avail |
Definition at line 130 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(), tbb::internal::concurrent_queue_base_v3::internal_abort(), tbb::internal::concurrent_queue_base_v3::internal_insert_if_not_full(), tbb::internal::concurrent_queue_base_v3::internal_insert_item(), and tbb::internal::concurrent_queue_base_v3::internal_pop().
atomic<size_t> tbb::internal::concurrent_queue_rep::n_invalid_entries |
Definition at line 131 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::internal_assign(), tbb::internal::concurrent_queue_base_v3::internal_empty(), tbb::internal::concurrent_queue_base_v3::internal_size(), tbb::internal::micro_queue::pop(), and tbb::internal::micro_queue::push().
|
static |
Must be power of 2.
Definition at line 122 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_iterator_base_v3::advance(), tbb::internal::micro_queue::assign(), tbb::internal::concurrent_queue_iterator_rep::concurrent_queue_iterator_rep(), tbb::internal::concurrent_queue_iterator_rep::get_item(), index(), tbb::internal::concurrent_queue_base_v3::internal_assign(), tbb::internal::concurrent_queue_base_v3::internal_finish_clear(), tbb::internal::micro_queue::make_invalid(), tbb::internal::micro_queue::pop(), tbb::internal::micro_queue::push(), and tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3().
char tbb::internal::concurrent_queue_rep::pad1[NFS_MaxLineSize-((sizeof(atomic< ticket >)+sizeof(concurrent_monitor)+sizeof(atomic< size_t >))&(NFS_MaxLineSize-1))] |
Definition at line 132 of file concurrent_queue.cpp.
char tbb::internal::concurrent_queue_rep::pad2[NFS_MaxLineSize-((sizeof(atomic< ticket >)+sizeof(concurrent_monitor))&(NFS_MaxLineSize-1))] |
Definition at line 136 of file concurrent_queue.cpp.
|
staticprivate |
Approximately n_queue/golden ratio.
Definition at line 118 of file concurrent_queue.cpp.
Referenced by index().
concurrent_monitor tbb::internal::concurrent_queue_rep::slots_avail |
Definition at line 135 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(), tbb::internal::concurrent_queue_base_v3::internal_abort(), tbb::internal::concurrent_queue_base_v3::internal_insert_item(), tbb::internal::concurrent_queue_base_v3::internal_pop(), and tbb::internal::concurrent_queue_base_v3::internal_pop_if_present().
atomic<ticket> tbb::internal::concurrent_queue_rep::tail_counter |
Definition at line 134 of file concurrent_queue.cpp.
Referenced by tbb::internal::concurrent_queue_base_v3::concurrent_queue_base_v3(), tbb::internal::concurrent_queue_iterator_rep::get_item(), tbb::internal::concurrent_queue_base_v3::internal_assign(), tbb::internal::concurrent_queue_base_v3::internal_empty(), tbb::internal::concurrent_queue_base_v3::internal_insert_if_not_full(), tbb::internal::concurrent_queue_base_v3::internal_insert_item(), tbb::internal::concurrent_queue_base_v3::internal_pop(), tbb::internal::concurrent_queue_base_v3::internal_pop_if_present(), and tbb::internal::concurrent_queue_base_v3::internal_size().