Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Base class that provides basic functionality for atomic<T> without fetch_and_add. More...
#include <atomic.h>
Classes | |
union | converter |
Union type used to convert type T to underlying integral type. More... | |
union | ptr_converter |
union | ptr_converter< value_t * > |
Public Types | |
typedef T | value_type |
Public Member Functions | |
atomic_impl ()=default | |
constexpr | atomic_impl (value_type value) |
template<memory_semantics M> | |
value_type | fetch_and_store (value_type value) |
value_type | fetch_and_store (value_type value) |
template<memory_semantics M> | |
value_type | compare_and_swap (value_type value, value_type comparand) |
value_type | compare_and_swap (value_type value, value_type comparand) |
operator value_type () const volatile | |
template<memory_semantics M> | |
value_type | load () const |
value_type | load () const |
template<memory_semantics M> | |
void | store (value_type value) |
void | store (value_type value) |
Protected Member Functions | |
value_type | store_with_release (value_type rhs) |
Protected Attributes | |
aligned_storage< T, sizeof(T)> | my_storage |
Static Private Member Functions | |
template<typename value_t > | |
static converter< value_t >::bits_type | to_bits (value_t value) |
template<typename value_t > | |
static value_t | to_value (typename converter< value_t >::bits_type bits) |
template<typename value_t > | |
static converter< value_t >::bits_type & | to_bits_ref (value_t &value) |
Base class that provides basic functionality for atomic<T> without fetch_and_add.
Works for any type T that has the same size as an integral type, has a trivial constructor/destructor, and can be copied/compared by memcpy/memcmp.
typedef T tbb::internal::atomic_impl< T >::value_type |
|
default |
|
inline |
Definition at line 275 of file atomic.h.
|
inline |
Definition at line 289 of file atomic.h.
Referenced by tbb::queuing_rw_mutex::scoped_lock::acquire(), tbb::interface5::internal::concurrent_unordered_base< concurrent_unordered_map_traits< Key, T, internal::hash_compare< Key, Hasher, Key_equality >, Allocator, false > >::adjust_table_size(), tbb::internal::arena::advertise_new_work(), tbb::internal::concurrent_vector_base_v3::helper::assign_first_segment_if_necessary(), tbb::internal::atomic_do_once(), tbb::internal::atomic_update(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::compare_and_swap(), tbb::interface5::fetch_and_and(), tbb::interface5::fetch_and_or(), tbb::internal::concurrent_vector_base_v3::internal_grow_to_at_least_with_result(), tbb::internal::concurrent_queue_base_v3::internal_insert_if_not_full(), tbb::internal::concurrent_queue_base_v3::internal_pop_if_present(), tbb::strict_ppl::internal::concurrent_queue_base_v3< Value >::internal_try_pop(), tbb::internal::arena::is_out_of_work(), tbb::interface5::reader_writer_lock::set_next_writer(), tbb::internal::rml::private_worker::start_shutdown(), tbb::internal::rml::private_worker::wake_or_launch(), and tbb::internal::rml::private_server::wake_some().
|
inline |
Definition at line 295 of file atomic.h.
|
inline |
Definition at line 278 of file atomic.h.
Referenced by tbb::internal::atomic_impl< tbb::interface9::global_control * >::fetch_and_store(), tbb::interface9::internal::flag_task::mark_task_stolen(), tbb::interface6::internal::aggregator_generic< aggregated_operation_type >::start_handle_operations(), and tbb::interface6::aggregator_ext< internal::basic_handler >::start_handle_operations().
|
inline |
Definition at line 284 of file atomic.h.
|
inline |
Definition at line 306 of file atomic.h.
Referenced by tbb::concurrent_vector< padded_element, padded_allocator_type >::concurrent_vector(), tbb::concurrent_vector< padded_element, padded_allocator_type >::grow_by(), tbb::internal::concurrent_vector_base_v3::internal_swap(), tbb::internal::concurrent_vector_base_v3::segment_t::load(), tbb::internal::concurrent_vector_base_v3::segment_t::operator=(), tbb::flow::interface10::opencl_memory< Factory >::receive(), tbb::internal::concurrent_vector_base_v3::segment_t::segment_t(), tbb::flow::interface10::opencl_memory< Factory >::send(), internal::async_storage< T >::set(), internal::async_storage< T >::subscribe(), and tbb::concurrent_vector< padded_element, padded_allocator_type >::~concurrent_vector().
|
inline |
|
inline |
Definition at line 299 of file atomic.h.
|
inline |
Definition at line 317 of file atomic.h.
Referenced by internal::async_storage< T >::async_storage(), tbb::internal::concurrent_vector_base_v3::concurrent_vector_base_v3(), tbb::internal::concurrent_vector_base_v3::internal_swap(), tbb::interface6::task_scheduler_observer::observe(), tbb::internal::concurrent_vector_base_v3::segment_t::operator=(), tbb::flow::interface10::opencl_memory< Factory >::receive(), tbb::internal::concurrent_vector_base_v3::segment_t::segment_t(), tbb::flow::interface10::opencl_memory< Factory >::send(), internal::async_storage< T >::set(), tbb::internal::concurrent_vector_base_v3::segment_t::store(), and tbb::internal::task_scheduler_observer_v3::task_scheduler_observer_v3().
|
inline |
Definition at line 321 of file atomic.h.
|
inlineprotected |
Definition at line 326 of file atomic.h.
Referenced by tbb::atomic< tbb::interface9::global_control * >::operator=().
|
inlinestaticprivate |
Definition at line 236 of file atomic.h.
Referenced by tbb::internal::atomic_impl< tbb::interface9::global_control * >::compare_and_swap(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::fetch_and_store(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::store(), and tbb::internal::atomic_impl< tbb::interface9::global_control * >::store_with_release().
|
inlinestaticprivate |
Definition at line 259 of file atomic.h.
Referenced by tbb::internal::atomic_impl< tbb::interface9::global_control * >::load(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::operator value_type(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::store(), and tbb::internal::atomic_impl< tbb::interface9::global_control * >::store_with_release().
|
inlinestaticprivate |
|
protected |
Definition at line 222 of file atomic.h.
Referenced by tbb::internal::atomic_impl< tbb::interface9::global_control * >::compare_and_swap(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::fetch_and_store(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::load(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::operator value_type(), tbb::internal::atomic_impl< tbb::interface9::global_control * >::store(), and tbb::internal::atomic_impl< tbb::interface9::global_control * >::store_with_release().