Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
A queue using simple locking. More...
Public Types | |
typedef concurrent_queue_base::page | page |
Public Member Functions | |
void | push (const void *item, ticket k, concurrent_queue_base &base, concurrent_queue_base::copy_specifics op_type) |
void | abort_push (ticket k, concurrent_queue_base &base) |
bool | pop (void *dst, ticket k, concurrent_queue_base &base) |
micro_queue & | assign (const micro_queue &src, concurrent_queue_base &base, concurrent_queue_base::copy_specifics op_type) |
page * | make_copy (concurrent_queue_base &base, const page *src_page, size_t begin_in_page, size_t end_in_page, ticket &g_index, concurrent_queue_base::copy_specifics op_type) |
void | make_invalid (ticket k) |
Public Attributes | |
atomic< page * > | head_page |
atomic< ticket > | head_counter |
atomic< page * > | tail_page |
atomic< ticket > | tail_counter |
spin_mutex | page_mutex |
Friends | |
class | micro_queue_pop_finalizer |
A queue using simple locking.
For efficiency, this class has no constructor. The caller is expected to zero-initialize it.
Definition at line 47 of file concurrent_queue.cpp.
Definition at line 48 of file concurrent_queue.cpp.
void tbb::internal::micro_queue::abort_push | ( | ticket | k, |
concurrent_queue_base & | base | ||
) |
Definition at line 226 of file concurrent_queue.cpp.
References tbb::internal::concurrent_queue_base_v3::copy, and push().
Referenced by tbb::internal::concurrent_queue_base_v3::internal_insert_item().
micro_queue & tbb::internal::micro_queue::assign | ( | const micro_queue & | src, |
concurrent_queue_base & | base, | ||
concurrent_queue_base::copy_specifics | op_type | ||
) |
Definition at line 253 of file concurrent_queue.cpp.
References __TBB_ASSERT, __TBB_CATCH, __TBB_RETHROW, __TBB_TRY, head_counter, head_page, tbb::internal::concurrent_queue_base_v3::items_per_page, make_copy(), make_invalid(), tbb::internal::modulo_power_of_two(), tbb::internal::concurrent_queue_rep::n_queue, tbb::internal::concurrent_queue_base_v3::page::next, tail_counter, and tail_page.
Referenced by tbb::internal::concurrent_queue_base_v3::internal_assign().
concurrent_queue_base::page * tbb::internal::micro_queue::make_copy | ( | concurrent_queue_base & | base, |
const page * | src_page, | ||
size_t | begin_in_page, | ||
size_t | end_in_page, | ||
ticket & | g_index, | ||
concurrent_queue_base::copy_specifics | op_type | ||
) |
Definition at line 295 of file concurrent_queue.cpp.
References __TBB_ASSERT, tbb::internal::concurrent_queue_base_v3::allocate_page(), tbb::internal::concurrent_queue_base_v3::copy, tbb::internal::concurrent_queue_base_v3::copy_page_item(), tbb::internal::concurrent_queue_base_v3::page::mask, tbb::internal::concurrent_queue_base_v3::move, and tbb::internal::concurrent_queue_base_v3::page::next.
Referenced by assign().
Definition at line 314 of file concurrent_queue.cpp.
References head_page, lock, tbb::internal::concurrent_queue_rep::n_queue, page_mutex, tbb::internal::static_invalid_page, tail_counter, and tail_page.
Referenced by assign(), and push().
bool tbb::internal::micro_queue::pop | ( | void * | dst, |
ticket | k, | ||
concurrent_queue_base & | base | ||
) |
Definition at line 230 of file concurrent_queue.cpp.
References __TBB_ASSERT, tbb::internal::concurrent_queue_base_v3::assign_and_destroy_item(), head_counter, head_page, tbb::internal::concurrent_queue_base_v3::items_per_page, ITT_NOTIFY, tbb::internal::modulo_power_of_two(), tbb::internal::concurrent_queue_base_v3::my_rep, tbb::internal::concurrent_queue_rep::n_invalid_entries, tbb::internal::concurrent_queue_rep::n_queue, p, tbb::internal::spin_wait_until_eq(), tbb::internal::spin_wait_while_eq(), sync_releasing, and tail_counter.
Referenced by tbb::internal::concurrent_queue_base_v3::internal_pop(), and tbb::internal::concurrent_queue_base_v3::internal_pop_if_present().
void tbb::internal::micro_queue::push | ( | const void * | item, |
ticket | k, | ||
concurrent_queue_base & | base, | ||
concurrent_queue_base::copy_specifics | op_type | ||
) |
Definition at line 161 of file concurrent_queue.cpp.
References __TBB_ASSERT, __TBB_CATCH, __TBB_RETHROW, __TBB_TRY, tbb::internal::concurrent_queue_base_v3::allocate_page(), tbb::internal::concurrent_queue_base_v3::copy, tbb::internal::concurrent_queue_base_v3::copy_item(), tbb::internal::eid_bad_last_alloc, head_page, tbb::internal::concurrent_queue_base_v3::items_per_page, ITT_NOTIFY, lock, make_invalid(), tbb::internal::modulo_power_of_two(), tbb::internal::concurrent_queue_base_v3::move, tbb::internal::concurrent_queue_base_v3::my_rep, tbb::internal::concurrent_queue_rep::n_invalid_entries, tbb::internal::concurrent_queue_rep::n_queue, p, page_mutex, tbb::internal::atomic_backoff::pause(), sync_releasing, tail, tail_counter, tail_page, and tbb::internal::throw_exception().
Referenced by abort_push(), tbb::internal::concurrent_queue_base_v3::internal_insert_if_not_full(), and tbb::internal::concurrent_queue_base_v3::internal_insert_item().
|
friend |
Definition at line 50 of file concurrent_queue.cpp.
atomic<ticket> tbb::internal::micro_queue::head_counter |
Definition at line 53 of file concurrent_queue.cpp.
Referenced by assign(), pop(), and tbb::internal::micro_queue_pop_finalizer::~micro_queue_pop_finalizer().
atomic<page*> tbb::internal::micro_queue::head_page |
Definition at line 52 of file concurrent_queue.cpp.
Referenced by assign(), tbb::internal::concurrent_queue_iterator_rep::concurrent_queue_iterator_rep(), tbb::internal::concurrent_queue_base_v3::internal_finish_clear(), make_invalid(), pop(), push(), and tbb::internal::micro_queue_pop_finalizer::~micro_queue_pop_finalizer().
spin_mutex tbb::internal::micro_queue::page_mutex |
Definition at line 58 of file concurrent_queue.cpp.
Referenced by make_invalid(), push(), and tbb::internal::micro_queue_pop_finalizer::~micro_queue_pop_finalizer().
atomic<ticket> tbb::internal::micro_queue::tail_counter |
Definition at line 56 of file concurrent_queue.cpp.
Referenced by assign(), make_invalid(), pop(), and push().
atomic<page*> tbb::internal::micro_queue::tail_page |
Definition at line 55 of file concurrent_queue.cpp.
Referenced by assign(), tbb::internal::concurrent_queue_base_v3::internal_finish_clear(), make_invalid(), push(), tbb::internal::concurrent_queue_base_v3::~concurrent_queue_base_v3(), and tbb::internal::micro_queue_pop_finalizer::~micro_queue_pop_finalizer().