| 
    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().