<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类型对象设置为清除状态的函数。 |