Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
A queue using simple locking. More...
#include <_concurrent_queue_impl.h>
Classes | |
class | destroyer |
Class used to ensure exception-safety of method "pop". More... | |
struct | padded_page |
Public Types | |
typedef void(* | item_constructor_t) (T *location, const void *src) |
Public Member Functions | |
void | push (const void *item, ticket k, concurrent_queue_base_v3< T > &base, item_constructor_t construct_item) |
bool | pop (void *dst, ticket k, concurrent_queue_base_v3< T > &base) |
micro_queue & | assign (const micro_queue &src, concurrent_queue_base_v3< T > &base, item_constructor_t construct_item) |
page * | make_copy (concurrent_queue_base_v3< T > &base, const page *src_page, size_t begin_in_page, size_t end_in_page, ticket &g_index, item_constructor_t construct_item) |
void | invalidate_page_and_rethrow (ticket k) |
Static Public Member Functions | |
static T & | get_ref (page &p, size_t index) |
Public Attributes | |
atomic< page * > | head_page |
atomic< ticket > | head_counter |
atomic< page * > | tail_page |
atomic< ticket > | tail_counter |
spin_mutex | page_mutex |
Private Types | |
typedef concurrent_queue_rep_base::page | page |
Private Member Functions | |
void | copy_item (page &dst, size_t dindex, const void *src, item_constructor_t construct_item) |
void | copy_item (page &dst, size_t dindex, const page &src, size_t sindex, item_constructor_t construct_item) |
void | assign_and_destroy_item (void *dst, page &src, size_t index) |
void | spin_wait_until_my_turn (atomic< ticket > &counter, ticket k, concurrent_queue_rep_base &rb) const |
![]() | |
no_copy (const no_copy &)=delete | |
no_copy ()=default | |
Friends | |
class | micro_queue_pop_finalizer< T > |
A queue using simple locking.
For efficiency, this class has no constructor. The caller is expected to zero-initialize it.
Definition at line 58 of file _concurrent_queue_impl.h.
typedef void(* tbb::strict_ppl::internal::micro_queue< T >::item_constructor_t) (T *location, const void *src) |
Definition at line 133 of file _concurrent_queue_impl.h.
|
private |
Definition at line 135 of file _concurrent_queue_impl.h.
micro_queue< T > & tbb::strict_ppl::internal::micro_queue< T >::assign | ( | const micro_queue< T > & | src, |
concurrent_queue_base_v3< T > & | base, | ||
item_constructor_t | construct_item | ||
) |
Definition at line 286 of file _concurrent_queue_impl.h.
|
inlineprivate |
Definition at line 156 of file _concurrent_queue_impl.h.
|
inlineprivate |
Definition at line 145 of file _concurrent_queue_impl.h.
|
inlineprivate |
Definition at line 149 of file _concurrent_queue_impl.h.
|
inlinestatic |
Definition at line 176 of file _concurrent_queue_impl.h.
Referenced by tbb::strict_ppl::internal::concurrent_queue_iterator_rep< Value >::get_item().
void tbb::strict_ppl::internal::micro_queue< T >::invalidate_page_and_rethrow | ( | ticket | k | ) |
Definition at line 327 of file _concurrent_queue_impl.h.
concurrent_queue_rep_base::page * tbb::strict_ppl::internal::micro_queue< T >::make_copy | ( | concurrent_queue_base_v3< T > & | base, |
const page * | src_page, | ||
size_t | begin_in_page, | ||
size_t | end_in_page, | ||
ticket & | g_index, | ||
item_constructor_t | construct_item | ||
) |
Definition at line 344 of file _concurrent_queue_impl.h.
bool tbb::strict_ppl::internal::micro_queue< T >::pop | ( | void * | dst, |
ticket | k, | ||
concurrent_queue_base_v3< T > & | base | ||
) |
Definition at line 263 of file _concurrent_queue_impl.h.
void tbb::strict_ppl::internal::micro_queue< T >::push | ( | const void * | item, |
ticket | k, | ||
concurrent_queue_base_v3< T > & | base, | ||
item_constructor_t | construct_item | ||
) |
Definition at line 215 of file _concurrent_queue_impl.h.
|
private |
Definition at line 203 of file _concurrent_queue_impl.h.
|
friend |
Definition at line 165 of file _concurrent_queue_impl.h.
atomic<ticket> tbb::strict_ppl::internal::micro_queue< T >::head_counter |
Definition at line 181 of file _concurrent_queue_impl.h.
Referenced by tbb::strict_ppl::internal::micro_queue< Value >::assign().
atomic<page*> tbb::strict_ppl::internal::micro_queue< T >::head_page |
Definition at line 180 of file _concurrent_queue_impl.h.
Referenced by tbb::strict_ppl::internal::micro_queue< Value >::assign().
spin_mutex tbb::strict_ppl::internal::micro_queue< T >::page_mutex |
Definition at line 186 of file _concurrent_queue_impl.h.
atomic<ticket> tbb::strict_ppl::internal::micro_queue< T >::tail_counter |
Definition at line 184 of file _concurrent_queue_impl.h.
Referenced by tbb::strict_ppl::internal::micro_queue< Value >::assign().
atomic<page*> tbb::strict_ppl::internal::micro_queue< T >::tail_page |
Definition at line 183 of file _concurrent_queue_impl.h.
Referenced by tbb::strict_ppl::internal::micro_queue< Value >::assign().