Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Base class of concurrent vector implementation. More...
#include <concurrent_vector.h>
Classes | |
class | helper |
struct | internal_segments_table |
Internal structure for compact() More... | |
struct | segment_allocated |
struct | segment_allocation_failed |
struct | segment_not_used |
class | segment_t |
class | segment_value_t |
Protected Types | |
enum | { default_initial_segments = 1, pointers_per_short_table = 3, pointers_per_long_table = sizeof(segment_index_t) * 8 } |
typedef size_t | segment_index_t |
typedef size_t | size_type |
typedef void(__TBB_EXPORTED_FUNC * | internal_array_op1) (void *begin, size_type n) |
An operation on an n-element array starting at begin. More... | |
typedef void(__TBB_EXPORTED_FUNC * | internal_array_op2) (void *dst, const void *src, size_type n) |
An operation on n-element destination array and n-element source array. More... | |
Static Protected Member Functions | |
static segment_index_t | segment_index_of (size_type index) |
static segment_index_t | segment_base (segment_index_t k) |
static segment_index_t | segment_base_index_of (segment_index_t &index) |
static size_type | segment_size (segment_index_t k) |
static bool | is_first_element_in_segment (size_type element_index) |
Protected Attributes | |
void *(* | vector_allocator_ptr )(concurrent_vector_base_v3 &, size_t) |
allocator function pointer More... | |
atomic< size_type > | my_first_block |
count of segments in the first block More... | |
atomic< size_type > | my_early_size |
Requested size of vector. More... | |
atomic< segment_t * > | my_segment |
Pointer to the segments table. More... | |
segment_t | my_storage [pointers_per_short_table] |
embedded storage of segment pointers More... | |
Friends | |
class | helper |
template<typename Container , typename Value > | |
class | vector_iterator |
void | enforce_segment_allocated (segment_value_t const &s, internal::exception_id exception=eid_bad_last_alloc) |
void | swap (segment_t &, segment_t &) __TBB_NOEXCEPT(true) |
Base class of concurrent vector implementation.
Definition at line 83 of file concurrent_vector.h.
|
protected |
An operation on an n-element array starting at begin.
Definition at line 243 of file concurrent_vector.h.
|
protected |
An operation on n-element destination array and n-element source array.
Definition at line 246 of file concurrent_vector.h.
|
protected |
Definition at line 87 of file concurrent_vector.h.
|
protected |
Definition at line 88 of file concurrent_vector.h.
|
protected |
Enumerator | |
---|---|
default_initial_segments | |
pointers_per_short_table | Number of slots for segment pointers inside the class. |
pointers_per_long_table |
Definition at line 91 of file concurrent_vector.h.
|
inlineprotected |
Definition at line 194 of file concurrent_vector.h.
References my_early_size, my_first_block, my_segment, my_storage, and tbb::relaxed.
|
protected |
Definition at line 313 of file concurrent_vector.cpp.
References __TBB_ASSERT, my_segment, my_storage, tbb::internal::NFS_Free(), pointers_per_long_table, pointers_per_short_table, and s.
|
protected |
Definition at line 376 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::acquire, tbb::internal::concurrent_vector_base_v3::helper::assign_first_segment_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), enforce_segment_allocated, tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), my_early_size, my_segment, my_storage, pointers_per_short_table, tbb::relaxed, segment_base(), segment_index_of(), and segment_size().
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::operator=().
|
protected |
Definition at line 329 of file concurrent_vector.cpp.
References tbb::internal::concurrent_vector_base_v3::helper::find_segment_end(), and segment_base().
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::capacity(), internal_grow_to_at_least_with_result(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::size().
|
protected |
Definition at line 501 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::internal::concurrent_vector_base_v3::helper::apply(), tbb::internal::concurrent_vector_base_v3::helper::find_segment_end(), my_early_size, my_first_block, and my_segment.
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::clear(), tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::~concurrent_vector().
|
protected |
Definition at line 511 of file concurrent_vector.cpp.
References __TBB_ASSERT, __TBB_CATCH, __TBB_RETHROW, __TBB_TRY, tbb::internal::concurrent_vector_base_v3::helper::allocate_segment(), tbb::internal::concurrent_vector_base_v3::helper::apply(), tbb::internal::concurrent_vector_base_v3::helper::find_segment_end(), tbb::internal::concurrent_vector_base_v3::internal_segments_table::first_block, tbb::internal::concurrent_vector_base_v3::helper::incompact_predicate(), tbb::internal::concurrent_vector_base_v3::segment_t::load(), my_early_size, my_first_block, my_segment, tbb::relaxed, s, segment_base(), segment_index_of(), segment_size(), tbb::internal::concurrent_vector_base_v3::segment_t::store(), and tbb::internal::concurrent_vector_base_v3::internal_segments_table::table.
|
protected |
Definition at line 356 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::acquire, tbb::internal::concurrent_vector_base_v3::helper::assign_first_segment_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), my_early_size, my_segment, my_storage, pointers_per_short_table, tbb::relaxed, segment_base(), and segment_index_of().
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector().
|
protected |
Definition at line 473 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::internal::concurrent_vector_base_v3::helper::acquire_segment(), tbb::internal::concurrent_vector_base_v3::helper::apply(), tbb::internal::concurrent_vector_base_v3::helper::assign_first_segment_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::first_block, my_first_block, my_segment, segment_base(), and segment_index_of().
Referenced by internal_grow_by(), and internal_grow_to_at_least_with_result().
|
protected |
Definition at line 467 of file concurrent_vector.cpp.
References internal_grow(), and my_early_size.
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::grow_by().
|
protected |
Deprecated entry point for backwards compatibility to TBB 2.1.
Definition at line 430 of file concurrent_vector.cpp.
References internal_grow_to_at_least_with_result(), and new_size.
|
protected |
Definition at line 434 of file concurrent_vector.cpp.
References __TBB_ASSERT, enforce_segment_allocated, internal_capacity(), internal_grow(), ITT_NOTIFY, my_early_size, my_segment, my_storage, new_size, tbb::internal::atomic_backoff::pause(), pointers_per_short_table, tbb::relaxed, s, segment_index_of(), and tbb::internal::spin_wait_while_eq().
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::grow_to_at_least(), and internal_grow_to_at_least().
|
protected |
Definition at line 418 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::acquire, tbb::internal::concurrent_vector_base_v3::helper::acquire_segment(), tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), my_early_size, tbb::relaxed, s, segment_base(), and segment_index_of().
|
protected |
Definition at line 339 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::internal::concurrent_vector_base_v3::helper::assign_first_segment_if_necessary(), tbb::internal::eid_reservation_length_error, tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::find_segment_end(), my_segment, segment_base(), segment_index_of(), and tbb::internal::throw_exception().
Referenced by internal_resize(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::reserve().
|
protected |
Definition at line 486 of file concurrent_vector.cpp.
References tbb::internal::concurrent_vector_base_v3::helper::apply(), internal_reserve(), my_early_size, my_first_block, my_segment, and segment_index_of().
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::assign(), tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector(), tbb::concurrent_vector< padded_element, padded_allocator_type >::internal_assign_n(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::resize().
|
protected |
Definition at line 582 of file concurrent_vector.cpp.
References tbb::acquire, my_early_size, my_first_block, my_segment, my_storage, pointers_per_short_table, tbb::relaxed, tbb::release, and swap.
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector(), tbb::concurrent_vector< padded_element, padded_allocator_type >::operator=(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::swap().
|
protected |
Obsolete.
Definition at line 333 of file concurrent_vector.cpp.
References __TBB_ASSERT, tbb::internal::eid_index_range_error, tbb::internal::eid_out_of_range, tbb::internal::eid_segment_range_error, and tbb::internal::throw_exception().
|
inlinestaticprotected |
Definition at line 233 of file concurrent_vector.h.
References __TBB_ASSERT, and tbb::internal::is_power_of_two_at_least().
Referenced by tbb::internal::vector_iterator< Container, Value >::operator++(), and tbb::internal::vector_iterator< Container, Value >::operator--().
|
inlinestaticprotected |
Definition at line 218 of file concurrent_vector.h.
Referenced by tbb::internal::concurrent_vector_base_v3::helper::cleanup(), tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), tbb::internal::concurrent_vector_base_v3::helper::extend_segment_table(), tbb::internal::concurrent_vector_base_v3::helper::first_segment(), internal_assign(), internal_capacity(), internal_compact(), internal_copy(), internal_grow(), internal_push_back(), internal_reserve(), and segment_base_index_of().
|
inlinestaticprotected |
Definition at line 222 of file concurrent_vector.h.
References segment_base(), and segment_index_of().
|
inlinestaticprotected |
Definition at line 214 of file concurrent_vector.h.
References __TBB_Log2().
Referenced by tbb::internal::concurrent_vector_base_v3::helper::cleanup(), internal_assign(), internal_compact(), internal_copy(), internal_grow(), internal_grow_to_at_least_with_result(), internal_push_back(), internal_reserve(), internal_resize(), and segment_base_index_of().
|
inlinestaticprotected |
Definition at line 228 of file concurrent_vector.h.
Referenced by tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), tbb::internal::concurrent_vector_base_v3::helper::extend_segment_table(), tbb::internal::concurrent_vector_base_v3::helper::first_segment(), internal_assign(), internal_compact(), and tbb::internal::concurrent_vector_base_v3::helper::next_segment().
|
friend |
Definition at line 121 of file concurrent_vector.h.
Referenced by tbb::internal::concurrent_vector_base_v3::helper::acquire_segment(), tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), internal_assign(), internal_grow_to_at_least_with_result(), and tbb::internal::concurrent_vector_base_v3::helper::safe_init_body::operator()().
|
friend |
Definition at line 276 of file concurrent_vector.h.
|
friend |
Definition at line 284 of file concurrent_vector.h.
Referenced by internal_swap().
|
friend |
Definition at line 280 of file concurrent_vector.h.
|
protected |
Requested size of vector.
Definition at line 184 of file concurrent_vector.h.
Referenced by concurrent_vector_base_v3(), tbb::concurrent_vector< padded_element, padded_allocator_type >::empty(), tbb::concurrent_vector< padded_element, padded_allocator_type >::grow_by(), internal_assign(), internal_clear(), internal_compact(), internal_copy(), internal_grow_by(), internal_grow_to_at_least_with_result(), internal_push_back(), internal_resize(), internal_swap(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::size().
|
protected |
count of segments in the first block
Definition at line 181 of file concurrent_vector.h.
Referenced by tbb::internal::concurrent_vector_base_v3::helper::assign_first_segment_if_necessary(), tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector(), concurrent_vector_base_v3(), tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), internal_clear(), internal_compact(), internal_grow(), internal_resize(), internal_swap(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::~concurrent_vector().
|
protected |
Pointer to the segments table.
Definition at line 187 of file concurrent_vector.h.
Referenced by tbb::internal::concurrent_vector_base_v3::helper::acquire_segment(), tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector(), concurrent_vector_base_v3(), tbb::internal::concurrent_vector_base_v3::helper::enable_segment(), tbb::internal::concurrent_vector_base_v3::helper::extend_segment_table(), tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::find_segment_end(), tbb::concurrent_vector< padded_element, padded_allocator_type >::front(), internal_assign(), internal_clear(), internal_compact(), internal_copy(), internal_grow(), internal_grow_to_at_least_with_result(), internal_reserve(), internal_resize(), internal_swap(), tbb::concurrent_vector< padded_element, padded_allocator_type >::~concurrent_vector(), and ~concurrent_vector_base_v3().
|
protected |
embedded storage of segment pointers
Definition at line 190 of file concurrent_vector.h.
Referenced by concurrent_vector_base_v3(), tbb::internal::concurrent_vector_base_v3::helper::extend_segment_table(), tbb::internal::concurrent_vector_base_v3::helper::extend_table_if_necessary(), tbb::internal::concurrent_vector_base_v3::helper::find_segment_end(), internal_assign(), internal_copy(), internal_grow_to_at_least_with_result(), internal_swap(), and ~concurrent_vector_base_v3().
|
protected |
allocator function pointer
Definition at line 178 of file concurrent_vector.h.
Referenced by tbb::internal::concurrent_vector_base_v3::helper::allocate_segment(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector().