命名空间
变体
操作

标准库头文件 <stdatomic.h>

来自 cppreference.com
< cpp‎ | header
 
 
标准库头文件
语言支持
概念
<concepts> (C++20)
诊断
<system_error> (C++11)

内存管理
<memory_resource> (C++17)  
元编程
<type_traits> (C++11)
<ratio> (C++11)
通用工具
<utility>
<tuple> (C++11)
<optional> (C++17)
<variant> (C++17)
<any> (C++17)
<debugging> (C++26)
<expected> (C++23)
<bitset>
<charconv> (C++17)
<format> (C++20)
<bit> (C++20)

字符串
<cuchar> (C++11)

容器
<flat_set> (C++23)
<span> (C++20)
<mdspan> (C++23)
<inplace_vector> (C++26)
迭代器
<iterator>
范围
<ranges> (C++20)
<generator> (C++23)
算法
数值
<cfenv> (C++11)
<complex>
<cmath>
<linalg> (C++26)
<numbers> (C++20)

时间
<chrono> (C++11)
本地化
<codecvt> (C++11/17/26*)
<text_encoding> (C++26)
输入/输出
<filesystem> (C++17)
<cstdio>
<cinttypes> (C++11)
<strstream> (C++98/26*)
正则表达式
<regex> (C++11)
并发支持
<stop_token> (C++20)
<thread> (C++11)
<atomic> (C++11)
<rcu> (C++26)
<stdatomic.h> (C++23)
<mutex> (C++11)
<shared_mutex> (C++14)

<condition_variable> (C++11)  
<semaphore> (C++20)
<latch> (C++20)

<barrier> (C++20)
<future> (C++11)
<hazard_pointer> (C++26)

C 兼容性
<cstdbool> (C++11/17/20*)  
<ccomplex> (C++11/17/20*)
<ctgmath> (C++11/17/20*)

<cstdalign> (C++11/17/20*)

<ciso646> (直到 C++20)

 

该头文件最初位于 C 标准库中。

该头文件是 并发支持 库的一部分。

<stdatomic.h> 在命名空间 std 中是否提供任何声明是不确定的。

内容

(C++23)
兼容性宏,使得 _Atomic(T) 等同于 std::atomic<T>
(函数宏) [编辑]
std::atomic_flag 初始化为 false
(宏常量) [编辑]

类型

无锁布尔原子类型
(类) [编辑]
定义给定原子操作的内存排序约束
(枚举) [编辑]
std::atomic<bool>
(typedef) [编辑]
std::atomic<char>
(typedef) [编辑]
std::atomic<signed char>
(typedef) [编辑]
std::atomic<unsigned char>
(typedef) [编辑]
std::atomic<short>
(typedef) [编辑]
std::atomic<unsigned short>
(typedef) [编辑]
std::atomic<int>
(typedef) [编辑]
std::atomic<unsigned int>
(typedef) [编辑]
std::atomic<long>
(typedef) [编辑]
std::atomic<unsigned long>
(typedef) [编辑]
std::atomic<long long>
(typedef) [编辑]
std::atomic<unsigned long long>
(typedef) [编辑]
std::atomic<char8_t>
(typedef) [编辑]
std::atomic<char16_t>
(typedef) [编辑]
std::atomic<char32_t>
(typedef) [编辑]
std::atomic<wchar_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::int8_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::uint8_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::int16_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::uint16_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::int32_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::uint32_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::int64_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::uint64_t>
(typedef) [编辑]
std::atomic<std::int_least8_t>
(typedef) [编辑]
std::atomic<std::uint_least8_t>
(typedef) [编辑]
std::atomic<std::int_least16_t>
(typedef) [编辑]
std::atomic<std::uint_least16_t>
(typedef) [编辑]
std::atomic<std::int_least32_t>
(typedef) [编辑]
std::atomic<std::uint_least32_t>
(typedef) [编辑]
std::atomic<std::int_least64_t>
(typedef) [编辑]
std::atomic<std::uint_least64_t>
(typedef) [编辑]
std::atomic<std::int_fast8_t>
(typedef) [编辑]
std::atomic<std::uint_fast8_t>
(typedef) [编辑]
std::atomic<std::int_fast16_t>
(typedef) [编辑]
std::atomic<std::uint_fast16_t>
(typedef) [编辑]
std::atomic<std::int_fast32_t>
(typedef) [编辑]
std::atomic<std::uint_fast32_t>
(typedef) [编辑]
std::atomic<std::int_fast64_t>
(typedef) [编辑]
std::atomic<std::uint_fast64_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::intptr_t>
(typedef) [编辑]
(C++11)(可选)
std::atomic<std::uintptr_t>
(typedef) [编辑]
std::atomic<std::size_t>
(typedef) [编辑]
std::atomic<std::ptrdiff_t>
(typedef) [编辑]
std::atomic<std::intmax_t>
(typedef) [编辑]
std::atomic<std::uintmax_t>
(typedef) [编辑]

函数

检查原子类型的操作是否无锁
(函数模板) [编辑]
原子地将原子对象的 value 值替换为非原子参数
(函数模板) [编辑]
原子地获取存储在原子对象中的 value 值
(函数模板) [编辑]
原子地将原子对象的 value 值替换为非原子参数,并返回原子对象的旧 value 值
(函数模板) [编辑]
原子地将原子对象的 value 值与非原子参数进行比较,如果相等则执行原子交换,否则执行原子加载
(函数模板) [编辑]
将一个非原子值添加到一个原子对象,并获取原子对象的先前值。
(函数模板) [编辑]
从原子对象中减去一个非原子值,并获取原子对象的先前值。
(函数模板) [编辑]
用与非原子参数进行按位与运算的结果替换原子对象,并获取原子对象的先前值。
(函数模板) [编辑]
用与非原子参数进行按位或运算的结果替换原子对象,并获取原子对象的先前值。
(函数模板) [编辑]
用与非原子参数进行按位异或运算的结果替换原子对象,并获取原子对象的先前值。
(函数模板) [编辑]
原子地将标志设置为 true 并返回其先前值。
(函数) [编辑]
原子地将标志的值设置为 false
(函数) [编辑]
通用内存顺序依赖栅栏同步原语。
(函数) [编辑]
线程与其在同一线程中执行的信号处理程序之间的栅栏。
(函数) [编辑]

[编辑] 概要

template<class T>
  using __std_atomic = std::atomic<T>;        // exposition only
 
#define _Atomic(T) __std_atomic<T>
 
#define ATOMIC_BOOL_LOCK_FREE /* see description */
#define ATOMIC_CHAR_LOCK_FREE /* see description */
#define ATOMIC_CHAR16_T_LOCK_FREE /* see description */
#define ATOMIC_CHAR32_T_LOCK_FREE /* see description */
#define ATOMIC_WCHAR_T_LOCK_FREE /* see description */
#define ATOMIC_SHORT_LOCK_FREE /* see description */
#define ATOMIC_INT_LOCK_FREE /* see description */
#define ATOMIC_LONG_LOCK_FREE /* see description */
#define ATOMIC_LLONG_LOCK_FREE /* see description */
#define ATOMIC_POINTER_LOCK_FREE /* see description */
 
using std::memory_order;                // see description
using std::memory_order_relaxed;        // see description
using std::memory_order_consume;        // see description
using std::memory_order_acquire;        // see description
using std::memory_order_release;        // see description
using std::memory_order_acq_rel;        // see description
using std::memory_order_seq_cst;        // see description
 
using std::atomic_flag;                 // see description
 
using std::atomic_bool;                 // see description
using std::atomic_char;                 // see description
using std::atomic_schar;                // see description
using std::atomic_uchar;                // see description
using std::atomic_short;                // see description
using std::atomic_ushort;               // see description
using std::atomic_int;                  // see description
using std::atomic_uint;                 // see description
using std::atomic_long;                 // see description
using std::atomic_ulong;                // see description
using std::atomic_llong;                // see description
using std::atomic_ullong;               // see description
using std::atomic_char8_t;              // see description
using std::atomic_char16_t;             // see description
using std::atomic_char32_t;             // see description
using std::atomic_wchar_t;              // see description
using std::atomic_int8_t;               // see description
using std::atomic_uint8_t;              // see description
using std::atomic_int16_t;              // see description
using std::atomic_uint16_t;             // see description
using std::atomic_int32_t;              // see description
using std::atomic_uint32_t;             // see description
using std::atomic_int64_t;              // see description
using std::atomic_uint64_t;             // see description
using std::atomic_int_least8_t;         // see description
using std::atomic_uint_least8_t;        // see description
using std::atomic_int_least16_t;        // see description
using std::atomic_uint_least16_t;       // see description
using std::atomic_int_least32_t;        // see description
using std::atomic_uint_least32_t;       // see description
using std::atomic_int_least64_t;        // see description
using std::atomic_uint_least64_t;       // see description
using std::atomic_int_fast8_t;          // see description
using std::atomic_uint_fast8_t;         // see description
using std::atomic_int_fast16_t;         // see description
using std::atomic_uint_fast16_t;        // see description
using std::atomic_int_fast32_t;         // see description
using std::atomic_uint_fast32_t;        // see description
using std::atomic_int_fast64_t;         // see description
using std::atomic_uint_fast64_t;        // see description
using std::atomic_intptr_t;             // see description
using std::atomic_uintptr_t;            // see description
using std::atomic_size_t;               // see description
using std::atomic_ptrdiff_t;            // see description
using std::atomic_intmax_t;             // see description
using std::atomic_uintmax_t;            // see description
 
using std::atomic_is_lock_free;                         // see description
using std::atomic_load;                                 // see description
using std::atomic_load_explicit;                        // see description
using std::atomic_store;                                // see description
using std::atomic_store_explicit;                       // see description
using std::atomic_exchange;                             // see description
using std::atomic_exchange_explicit;                    // see description
using std::atomic_compare_exchange_strong;              // see description
using std::atomic_compare_exchange_strong_explicit;     // see description
using std::atomic_compare_exchange_weak;                // see description
using std::atomic_compare_exchange_weak_explicit;       // see description
using std::atomic_fetch_add;                            // see description
using std::atomic_fetch_add_explicit;                   // see description
using std::atomic_fetch_sub;                            // see description
using std::atomic_fetch_sub_explicit;                   // see description
using std::atomic_fetch_or;                             // see description
using std::atomic_fetch_or_explicit;                    // see description
using std::atomic_fetch_xor;                            // see description
using std::atomic_fetch_xor_explicit;                   // see description
using std::atomic_fetch_and;                            // see description
using std::atomic_fetch_and_explicit;                   // see description
using std::atomic_flag_test_and_set;                    // see description
using std::atomic_flag_test_and_set_explicit;           // see description
using std::atomic_flag_clear;                           // see description
using std::atomic_flag_clear_explicit;                  // see description
 
#define ATOMIC_FLAG_INIT /* see description */
 
using std::atomic_thread_fence;                         // see description
using std::atomic_signal_fence;                         // see description