<atomic>

定义选件类和模板选件类使用创建支持基本操作的类型。

#include <atomic>

备注

备注

使用 /clr/clr:pure,在生成的代码,则此标头块。

基本操作来帮助您使用多个线程正确操作对象,而无需使用 mutex 锁的两个主要属性。

  • 由于是原子操作不可分割的,在同一对象的第二个原子操作从不同的线程可以在第一个原子操作前后只获取对象的状态。

  • 根据其 memory_order 参数,基本操作在同一线程上建立其他基本操作的效果的可见性的排序要求。 因此,它禁止违反排序要求的编译器优化。

在一些平台上,有效地实现这些类型的基本操作可能是不可能的,而无需使用 mutex 锁。 如果该类型的基本操作不使用锁,基类型是 无锁。

选件类 atomic_flag 提供包含一个 bool 标志的更小的基础。 其操作始终是无锁。

模板选件类 atomic<Ty> 存储的参数类型 Ty 对象并提供对该的基本访问存储的值。 可以为它使用通过 memcmp,可以复制使用 memcpy 和用于相等测试的任何类型。 具体来说,可以将其与满足这些要求,然后在许多情况下,使用浮点类型的用户定义的类型。

模板还具有一组集成类型的专用化和指针的部分专用化。 这些专用化提供在主模板不可用的附加操作。

指针专用化

atomic<Ty *> 部分专用化适用于所有指针类型。 对指针算法的方法。

集成专用化

atomic<integral> 专用化适用于所有整数类型。 它们通过主模板不可用的附加操作。

每个 atomic<integral> 类型具有您在 if directive 可以使用确定在编译时中的相应宏在该类型的操作是否是无锁。 如果宏的值为零,类型的操作不是无锁。 如果该值为 1,操作可能是无锁,因此,需要一个运行时检查。 如果该值为 2,操作是无锁。 可以使用函数 atomic_is_lock_free 确定在运行时在类型的操作是否是无锁。

对于每一个整数类型,具有管理该整数类型对象的一个对应的命名基类型。 每个 atomic_integral 类型具有相同的设置成员函数与 atomic<Ty> 的相应实例化,并且可以传递给任何非成员基本功能。

atomic_integral 类型

整型

atomic_is_lock_free

atomic_char

char

ATOMIC_CHAR_LOCK_FREE

atomic_schar

signed char

ATOMIC_CHAR_LOCK_FREE

atomic_uchar

unsigned char

ATOMIC_CHAR_LOCK_FREE

atomic_char16_t

char16_t

ATOMIC_CHAR16_T_LOCK_FREE

atomic_char32_t

char32_t

ATOMIC_CHAR32_T_LOCK_FREE

atomic_wchar_t

wchar_t

ATOMIC_WCHAR_T_LOCK_FREE

atomic_short

short

ATOMIC_SHORT_LOCK_FREE

atomic_ushort

unsigned short

ATOMIC_SHORT_LOCK_FREE

atomic_int

int

ATOMIC_INT_LOCK_FREE

atomic_uint

unsigned int

ATOMIC_INT_LOCK_FREE

atomic_long

long

ATOMIC_LONG_LOCK_FREE

atomic_ulong

unsigned long

ATOMIC_LONG_LOCK_FREE

atomic_llong

long long

ATOMIC_LLONG_LOCK_FREE

atomic_ullong

unsigned long long

ATOMIC_LLONG_LOCK_FREE

Typedef 名称对于基本模板的专用化在标头 <inttypes.h>中定义的某些现有类型。

基类型

Typedef 名称

atomic_int8_t

atomic<int8_t>

atomic_uint8_t

atomic<uint8_t>

atomic_int16_t

atomic<int16_t>

atomic_uint16_t

atomic<uint16_t>

atomic_int32_t

atomic<int32_t>

atomic_uint32_t

atomic<uint32_t>

atomic_int64_t

atomic<int64_t>

atomic_uint64_t

atomic<uint64_t>

atomic_int_least8_t

atomic<int_least8_t>

atomic_uint_least8_t

atomic<uint_least8_t>

atomic_int_least16_t

atomic<int_least16_t>

atomic_uint_least16_t

atomic<uint_least16_t>

atomic_int_least32_t

atomic<int_least32_t>

atomic_uint_least32_t

atomic<uint_least32_t>

atomic_int_least64_t

atomic<int_least64_t>

atomic_uint_least64_t

atomic<uint_least64_t>

atomic_int_fast8_t

atomic<int_fast8_t>

atomic_uint_fast8_t

atomic<uint_fast8_t>

atomic_int_fast16_t

atomic<int_fast16_t>

atomic_uint_fast16_

atomic<uint_fast16_t>

atomic_int_fast32_t

atomic<int_fast32_t>

atomic_uint_fast32_t

atomic<uint_fast32_t>

atomic_int_fast64_t

atomic<int_fast64_t>

atomic_uint_fast64_t

atomic<uint_fast64_t>

atomic_intptr_t

atomic<intptr_t>

atomic_uintptr_t

atomic<uintptr_t>

atomic_size_t

atomic<size_t>

atomic_ptrdiff_t

atomic<ptrdiff_t>

atomic_intmax_t

atomic<intmax_t>

atomic_uintmax_t

atomic<uintmax_t>

结构

名称

描述

原子结构

描述对存储值的基本操作的对象。

atomic_flag结构

描述基本设置和清除 bool 标志的对象。

枚举

名称

描述

memory_order枚举

提供符号名对于内存位置的同步操作。 这些操作会影响在一个线程上分配如何将变得可见在另一个。

函数

在下面的列表,请在 _explicit 不关闭具有相应的 _explicit语义,不同之处在于,它们具有 memory_order_seq_cst的隐式 memory_order 参数的函数。

名称

描述

atomic_compare_exchange_strong功能

执行 基本比较和交换 操作。

atomic_compare_exchange_strong_explicit功能

执行 基本比较和交换 操作。

atomic_compare_exchange_weak功能

执行 弱基本比较和交换 操作。

atomic_compare_exchange_weak_explicit功能

执行 弱基本比较和交换 操作。

atomic_exchange 函数

替换存储的值。

atomic_exchange_explicit功能

替换存储的值。

atomic_fetch_add 函数

添加指定值到现有存储的值。

atomic_fetch_add_explicit功能

添加指定值到现有存储的值。

atomic_fetch_and 函数

执行按位 XOR 运算在指定值和现有存储的值的 and。

atomic_fetch_and_explicit功能

执行按位 XOR 运算在指定值和现有存储的值的 and。

atomic_fetch_or 函数

执行按位 XOR 运算在指定值和现有存储的值的 or。

atomic_fetch_or_explicit功能

执行按位 XOR 运算在指定值和现有存储的值的 or。

atomic_fetch_sub 函数

从现有存储的值减为指定的值。

atomic_fetch_sub_explicit功能

从现有存储的值减为指定的值。

atomic_fetch_xor 函数

执行按位 XOR 运算在指定值和现有存储的值的 exclusive or。

atomic_fetch_xor_explicit功能

执行按位 XOR 运算在指定值和现有存储的值的 exclusive or。

atomic_flag_clear功能

设置一个 atomic_flag 对象的标志传递给 false。

atomic_flag_clear_explicit功能

设置一个 atomic_flag 对象的标志传递给 false。

atomic_flag_test_and_set功能

设置一个 atomic_flag 对象的标志传递给 true。

atomic_flag_test_and_set_explicit功能

设置一个 atomic_flag 对象的标志传递给 true。

atomic_init功能

atomic 对象中存储的值。

atomic_is_lock_free 函数

指定在指定对象的基本操作是否为无锁。

atomic_load功能

基本检索值。

atomic_load_explicit功能

基本检索值。

atomic_signal_fence功能

作为在调用线程上建立范围之间的内存排序的要求具有通知处理程序中执行在同一个线程的 大小。

atomic_store功能

基本存储一个值。

atomic_store_explicit功能

基本存储一个值。

atomic_thread_fence功能

作为该内存排序的要求有关其他范围。

kill_dependency功能

中断一个可能的依赖关系链。

请参见

参考

标准模板库

其他资源

标头文件