C++ atomic 头
-
定义
atomic类型是封装一个值的类型,该值的访问保证不会引起数据争用,并且可用于在不同线程之间同步内存访问。该标头声明了两个C++类,atomic 和 atomic_flag,实现独立类 atomic 类型的所有功能。标头还声明了与C中的原子支持兼容的整套C风格类型和函数。 -
类
类 tomic atomic_flag -
数据类型
类型 memory_order -
C风格 atomic 类型
下面的 atomic 类型也在这个头中定义;每个实例的行为与列出的包含类型的atomic实例的行为相同。包含类型 原子类型 描述 bool atomic_bool 基本整数类型的原子。这些是原子类模板的相应完全转换的typedef或此类转换的基类。 char atomic_char signed char atomic_schar unsigned char atomic_uchar short atomic_short unsigned short atomic_ushort int atomic_int unsigned int atomic_uint long atomic_long unsigned long atomic_ulong long long atomic_llong unsigned long long atomic_ullong wchar_t atomic_wchar_t char16_t atomic_char16_t char32_t atomic_char32_t intmax_t atomic_intmax_t 基于宽度的积分的原子(在<cinttypes>中定义的原子)。这些中的每一个都是上述原子之一的基本整数类型的别名,或者是原子类模板具有扩展整数类型的完全专门化的别名。其中N是8、16、32、64之一,或库支持的任何其他类型宽度。 uintmax_t atomic_uintmax_t int_leastN_t atomic_int_leastN_t uint_leastN_t atomic_uint_leastN_t int_fastN_t atomic_int_fastN_t uint_fastN_t atomic_uint_fastN_t intptr_t atomic_intptr_t uintptr_t atomic_uintptr_t size_t atomic_size_t ptrdiff_t atomic_ptrdiff_t -
函数
函数 kill_dependency atomic_thread_fence atomic_signal_fence -
原子对象的函数(C风格)
函数 atomic_is_lock_free atomic_init atomic_store atomic_store_explicit atomic_load atomic_load_explicit atomic_exchange atomic_exchange_explicit atomic_compare_exchange_weak atomic_compare_exchange_weak_explicit atomic_compare_exchange_strong atomic_compare_exchange_strong_explicit atomic_fetch_add atomic_fetch_add_explicit atomic_fetch_sub atomic_fetch_sub_explicit atomic_fetch_and atomic_fetch_and_explicit atomic_fetch_or atomic_fetch_or_explicit atomic_fetch_xor atomic_fetch_xor_explicit -
原子标志的函数(C风格)
函数 atomic_flag_test_and_set atomic_flag_test_and_set_explicit atomic_flag_clear atomic_flag_clear_explicit -
宏函数
宏函数 描述 ATOMIC_VAR_INIT 原子变量初始化 ATOMIC_FLAG_INIT 原子标志初始化 -
宏常量
宏常量 作用类型 定义 ATOMIC_BOOL_LOCK_FREE bool - 0,如果类型永远都不是无锁的。
- 1,它的类型有时是无锁的。
- 2,如果类型始终是无锁的。
ATOMIC_CHAR_LOCK_FREE char / signed char / unsigned char ATOMIC_SHORT_LOCK_FREE short / unsigned short ATOMIC_INT_LOCK_FREE int / unsigned int ATOMIC_LONG_LOCK_FREE long / unsigned long ATOMIC_LLONG_LOCK_FREE long long / unsigned long long ATOMIC_WCHAR_T_LOCK_FREE wchar_t ATOMIC_CHAR16_T_LOCK_FREE char16_t ATOMIC_CHAR32_T_LOCK_FREE char32_t ATOMIC_POINTER_LOCK_FREE U* / (for any type U)