Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Classes | |
struct | destroy_body |
struct | init_body |
TODO: turn into lambda functions when available. More... | |
struct | safe_init_body |
struct | segment_not_used_predicate |
Public Member Functions | |
helper (segment_t *segments, size_type fb, size_type esize, size_type index, size_type s, size_type f) throw () | |
void | first_segment () throw () |
void | next_segment () throw () |
template<typename F > | |
size_type | apply (const F &func) |
segment_value_t | get_segment_value (size_type index, bool wait) |
~helper () | |
void | cleanup () |
Out of line code to assists destructor in infrequent cases. More... | |
Public Attributes | |
segment_t * | table |
size_type | first_block |
size_type | k |
size_type | sz |
size_type | start |
size_type | finish |
size_type | element_size |
Static Public Attributes | |
static const size_type | page_size = 4096 |
memory page size More... | |
Definition at line 40 of file concurrent_vector.cpp.
|
inline |
Definition at line 124 of file concurrent_vector.cpp.
|
inline |
Definition at line 160 of file concurrent_vector.cpp.
References cleanup().
|
inlinestatic |
Definition at line 104 of file concurrent_vector.cpp.
References tbb::acquire, enable_segment(), tbb::internal::concurrent_vector_base_v3::enforce_segment_allocated, ITT_NOTIFY, tbb::internal::concurrent_vector_base_v3::segment_t::load(), tbb::internal::concurrent_vector_base_v3::my_segment, tbb::relaxed, tbb::internal::concurrent_vector_base_v3::helper::segment_not_used_predicate::s, tbb::internal::concurrent_vector_base_v3::helper::segment_not_used_predicate::segment_not_used_predicate(), and tbb::internal::spin_wait_while().
Referenced by tbb::internal::concurrent_vector_base_v3::internal_grow(), and tbb::internal::concurrent_vector_base_v3::internal_push_back().
|
inlinestatic |
Definition at line 75 of file concurrent_vector.cpp.
References tbb::internal::eid_bad_alloc, tbb::internal::throw_exception(), and tbb::internal::concurrent_vector_base_v3::vector_allocator_ptr.
Referenced by enable_segment(), and tbb::internal::concurrent_vector_base_v3::internal_compact().
|
inline |
Definition at line 141 of file concurrent_vector.cpp.
References first_segment(), k, and next_segment().
Referenced by tbb::internal::concurrent_vector_base_v3::internal_clear(), tbb::internal::concurrent_vector_base_v3::internal_compact(), tbb::internal::concurrent_vector_base_v3::internal_grow(), and tbb::internal::concurrent_vector_base_v3::internal_resize().
|
inlinestatic |
assign first segment size. k - is index of last segment to be allocated, not a count of segments
Definition at line 60 of file concurrent_vector.cpp.
References tbb::internal::atomic_impl< T >::compare_and_swap(), and tbb::internal::concurrent_vector_base_v3::my_first_block.
Referenced by enable_segment(), tbb::internal::concurrent_vector_base_v3::internal_assign(), tbb::internal::concurrent_vector_base_v3::internal_copy(), tbb::internal::concurrent_vector_base_v3::internal_grow(), and tbb::internal::concurrent_vector_base_v3::internal_reserve().
void tbb::internal::concurrent_vector_base_v3::helper::cleanup | ( | ) |
Out of line code to assists destructor in infrequent cases.
Definition at line 281 of file concurrent_vector.cpp.
References __TBB_ASSERT, element_size, finish, first_segment(), get_segment_value(), k, tbb::internal::concurrent_vector_base_v3::segment_t::load(), next_segment(), tbb::internal::concurrent_vector_base_v3::segment_value_t::pointer(), publish_segment(), tbb::relaxed, tbb::internal::concurrent_vector_base_v3::segment_base(), tbb::internal::concurrent_vector_base_v3::segment_index_of(), start, and sz.
Referenced by ~helper().
|
static |
Definition at line 222 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::acquire, allocate_segment(), assign_first_segment_if_necessary(), tbb::internal::concurrent_vector_base_v3::default_initial_segments, tbb::internal::concurrent_vector_base_v3::enforce_segment_allocated, ITT_NOTIFY, tbb::internal::concurrent_vector_base_v3::segment_t::load(), tbb::internal::concurrent_vector_base_v3::my_first_block, tbb::internal::concurrent_vector_base_v3::my_segment, tbb::internal::concurrent_vector_base_v3::segment_value_t::pointer(), publish_segment(), tbb::internal::concurrent_vector_base_v3::helper::segment_not_used_predicate::s, tbb::internal::concurrent_vector_base_v3::segment_base(), tbb::internal::concurrent_vector_base_v3::helper::segment_not_used_predicate::segment_not_used_predicate(), tbb::internal::concurrent_vector_base_v3::segment_size(), tbb::internal::spin_wait_while(), and tbb::internal::spin_wait_while_eq().
Referenced by acquire_segment(), tbb::internal::concurrent_vector_base_v3::internal_assign(), tbb::internal::concurrent_vector_base_v3::internal_copy(), tbb::internal::concurrent_vector_base_v3::internal_reserve(), and publish_segment().
|
static |
Definition at line 196 of file concurrent_vector.cpp.
References __TBB_ASSERT, __TBB_STATIC_ASSERT, ITT_NOTIFY, tbb::internal::concurrent_vector_base_v3::segment_t::load(), tbb::internal::concurrent_vector_base_v3::my_segment, tbb::internal::concurrent_vector_base_v3::my_storage, tbb::internal::NFS_Allocate(), tbb::internal::NFS_Free(), tbb::internal::atomic_backoff::pause(), tbb::internal::concurrent_vector_base_v3::pointers_per_long_table, tbb::internal::concurrent_vector_base_v3::pointers_per_short_table, tbb::relaxed, tbb::internal::concurrent_vector_base_v3::segment_base(), and tbb::internal::concurrent_vector_base_v3::segment_size().
Referenced by extend_table_if_necessary().
|
inlinestatic |
Definition at line 92 of file concurrent_vector.cpp.
References extend_segment_table(), tbb::internal::concurrent_vector_base_v3::my_segment, tbb::internal::concurrent_vector_base_v3::my_storage, tbb::internal::concurrent_vector_base_v3::pointers_per_short_table, and start.
Referenced by tbb::internal::concurrent_vector_base_v3::internal_assign(), tbb::internal::concurrent_vector_base_v3::internal_copy(), tbb::internal::concurrent_vector_base_v3::internal_grow(), tbb::internal::concurrent_vector_base_v3::internal_push_back(), and tbb::internal::concurrent_vector_base_v3::internal_reserve().
|
inlinestatic |
Definition at line 49 of file concurrent_vector.cpp.
References k, tbb::internal::concurrent_vector_base_v3::my_segment, tbb::internal::concurrent_vector_base_v3::my_storage, tbb::internal::concurrent_vector_base_v3::pointers_per_long_table, tbb::internal::concurrent_vector_base_v3::pointers_per_short_table, and s.
Referenced by tbb::internal::concurrent_vector_base_v3::internal_capacity(), tbb::internal::concurrent_vector_base_v3::internal_clear(), tbb::internal::concurrent_vector_base_v3::internal_compact(), and tbb::internal::concurrent_vector_base_v3::internal_reserve().
|
inline |
Definition at line 126 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::internal::concurrent_vector_base_v3::segment_base(), and tbb::internal::concurrent_vector_base_v3::segment_size().
Referenced by apply(), and cleanup().
|
inline |
Definition at line 151 of file concurrent_vector.cpp.
References tbb::acquire, ITT_NOTIFY, tbb::internal::concurrent_vector_base_v3::segment_t::load(), tbb::relaxed, tbb::internal::concurrent_vector_base_v3::helper::segment_not_used_predicate::s, tbb::internal::concurrent_vector_base_v3::helper::segment_not_used_predicate::segment_not_used_predicate(), and tbb::internal::spin_wait_while().
Referenced by cleanup().
|
inlinestatic |
Definition at line 45 of file concurrent_vector.cpp.
Referenced by tbb::internal::concurrent_vector_base_v3::internal_compact().
|
inline |
Definition at line 135 of file concurrent_vector.cpp.
References first_block, k, tbb::internal::concurrent_vector_base_v3::segment_size(), and sz.
Referenced by apply(), and cleanup().
|
inlinestatic |
Publish segment so other threads can see it.
Definition at line 83 of file concurrent_vector.cpp.
References element_size, enable_segment(), ITT_NOTIFY, k, tbb::release, tbb::internal::concurrent_vector_base_v3::segment_t::store(), and sync_releasing.
Referenced by cleanup(), and enable_segment().
size_type tbb::internal::concurrent_vector_base_v3::helper::element_size |
Definition at line 123 of file concurrent_vector.cpp.
Referenced by cleanup(), tbb::internal::concurrent_vector_base_v3::internal_assign(), tbb::internal::concurrent_vector_base_v3::internal_compact(), and publish_segment().
size_type tbb::internal::concurrent_vector_base_v3::helper::finish |
Definition at line 123 of file concurrent_vector.cpp.
Referenced by cleanup().
size_type tbb::internal::concurrent_vector_base_v3::helper::first_block |
Definition at line 123 of file concurrent_vector.cpp.
Referenced by tbb::internal::concurrent_vector_base_v3::internal_compact(), tbb::internal::concurrent_vector_base_v3::internal_grow(), and next_segment().
size_type tbb::internal::concurrent_vector_base_v3::helper::k |
Definition at line 123 of file concurrent_vector.cpp.
Referenced by apply(), cleanup(), find_segment_end(), tbb::internal::concurrent_vector_base_v3::internal_assign(), tbb::internal::concurrent_vector_base_v3::internal_compact(), tbb::internal::concurrent_vector_base_v3::internal_copy(), tbb::internal::concurrent_vector_base_v3::internal_reserve(), next_segment(), and publish_segment().
|
static |
memory page size
Definition at line 43 of file concurrent_vector.cpp.
size_type tbb::internal::concurrent_vector_base_v3::helper::start |
Definition at line 123 of file concurrent_vector.cpp.
Referenced by cleanup(), and extend_table_if_necessary().
size_type tbb::internal::concurrent_vector_base_v3::helper::sz |
Definition at line 123 of file concurrent_vector.cpp.
Referenced by cleanup(), and next_segment().
segment_t* tbb::internal::concurrent_vector_base_v3::helper::table |
Definition at line 122 of file concurrent_vector.cpp.
Referenced by tbb::internal::concurrent_vector_base_v3::internal_compact().