当前位置: C语言 -- 标准库 -- <stdatomic.h>

<stdatomic.h>头文件

<stdatomic.h>头文件是个可选头文件;如果实现定义了宏__STDC_NO_ATOMICS__,实现不需要提供<stdatomic.h>头文件,也不需要支持<stdatomic.h>头文件的任何功能。

<stdatomic.h>头文件定义了多个宏,并声明了多个类型、枚举常量、函数,用于对线程间的共享数据执行原子操作,具体如下:

类型(type):
memory_order 表示内存顺序的类型。
atomic_flag 表示原子标志的结构类型。

宏(macro):
表示原子类型锁无关属性的宏:
ATOMIC_BOOL_LOCK_FREE 表示_Bool类型锁无关属性的宏。
ATOMIC_CHAR_LOCK_FREE 表示char类型锁无关属性的宏。
ATOMIC_CHAR16_T_LOCK_FREE 表示char16_t类型锁无关属性的宏。
ATOMIC_CHAR32_T_LOCK_FREE 表示char32_t类型锁无关属性的宏。
ATOMIC_WCHAR_T_LOCK_FREE 表示wchar_t类型锁无关属性的宏。
ATOMIC_SHORT_LOCK_FREE 表示short类型锁无关属性的宏。
ATOMIC_INT_LOCK_FREE 表示int类型锁无关属性的宏。
ATOMIC_LONG_LOCK_FREE 表示long类型锁无关属性的宏。
ATOMIC_LLONG_LOCK_FREE 表示long long类型锁无关属性的宏。
ATOMIC_POINTER_LOCK_FREE 表示指针锁无关属性的宏。
其它宏:
ATOMIC_FLAG_INIT 初始化atomic_flag类型对象的宏。
ATOMIC_VAR_INIT 初始化原子变量的宏。
kill_dependency 终止依赖关系链的宏。

枚举常量(enumeration constant):
memory_order_relaxed 表示内存顺序的枚举常量。
memory_order_consume 表示内存顺序的枚举常量。
memory_order_acquire 表示内存顺序的枚举常量。
memory_order_release 表示内存顺序的枚举常量。
memory_order_acq_rel 表示内存顺序的枚举常量。
memory_order_seq_cst 表示内存顺序的枚举常量。

函数(function):
初始化函数:
atomic_init 初始化原子对象的函数。
栅栏函数:
atomic_thread_fence 原子线程栅栏函数。
atomic_signal_fence 原子信号栅栏函数。
锁无关属性函数:
atomic_is_lock_free 指示原子操作是否锁无关的函数。
原子操作函数:
atomic_store 替换原子对象值的函数。
atomic_store_explicit 替换原子对象值的函数。
atomic_load 读取原子对象值的函数。
atomic_load_explicit 读取原子对象值的函数。
atomic_exchange 读取并替换原子对象值的函数。
atomic_exchange_explicit 读取并替换原子对象值的函数。
atomic_compare_exchange_strong 根据比较结果,更新值的函数。
atomic_compare_exchange_strong_explicit 根据比较结果,更新值的函数。
atomic_compare_exchange_weak 根据比较结果,更新值的函数。
atomic_compare_exchange_weak_explicit 根据比较结果,更新值的函数。
atomic_fetch_add 原子加运算函数。
atomic_fetch_add_explicit 原子加运算函数。
atomic_fetch_sub 原子减运算函数。
atomic_fetch_sub_explicit 原子减运算函数。
atomic_fetch_or 原子按位或运算函数。
atomic_fetch_or_explicit 原子按位或运算函数。
atomic_fetch_xor 原子按位异或运算函数。
atomic_fetch_xor_explicit 原子按位异或运算函数。
atomic_fetch_and 原子按位与运算函数。
atomic_fetch_and_explicit 原子按位与运算函数。
原子标志操作函数:
atomic_flag_test_and_set atomic_flag类型对象设置为设置状态的函数。
atomic_flag_test_and_set_explicit atomic_flag类型对象设置为设置状态的函数。
atomic_flag_clear atomic_flag类型对象设置为清除状态的函数。
atomic_flag_clear_explicit atomic_flag类型对象设置为清除状态的函数。