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

<stdatomic.h>头文件

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

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

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

功能测试宏(feature test macro):
__STDC_VERSION_STDATOMIC_H__ 表示<stdatomic.h>头文件版本的宏。

宏(macro):
表示原子类型无锁属性的宏:
ATOMIC_BOOL_LOCK_FREE 表示bool原子类型无锁属性的宏。
ATOMIC_CHAR_LOCK_FREE 表示char原子类型无锁属性的宏。
ATOMIC_CHAR8_T_LOCK_FREE 表示char8_t原子类型无锁属性的宏。
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类型对象设置为清除状态的函数。