MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
atomic_ref_base< T, true, false > 模板结构体 参考

整数类型的原子引用特化 更多...

#include <atomic_base.hpp>

Public 类型

using value_type = T
 值类型
using difference_type = value_type
 差值类型

Public 成员函数

 atomic_ref_base (T &value)
 构造函数
operator= (T value) noexcept
 赋值运算符
MSTL_NODISCARD operator T () const noexcept
 类型转换运算符
MSTL_NODISCARD bool is_lock_free () const noexcept
 检查是否支持无锁操作
void store (T value, const memory_order mo=memory_order_seq_cst) noexcept
 原子存储操作
load (const memory_order mo=memory_order_seq_cst) const noexcept
 原子加载操作
exchange (T desire, const memory_order mo=memory_order_seq_cst) noexcept
 原子交换操作
bool compare_exchange_weak (T &expected, T desire, const memory_order success, const memory_order failure) noexcept
 弱比较交换操作
bool compare_exchange_strong (T &expected, T desire, const memory_order success, const memory_order failure) noexcept
 强比较交换操作
bool compare_exchange_weak (T &expected, T desire, const memory_order mo=memory_order_seq_cst) noexcept
 简化版弱比较交换操作
bool compare_exchange_strong (T &expected, T desire, const memory_order mo=memory_order_seq_cst) noexcept
 简化版强比较交换操作
MSTL_ALWAYS_INLINE void wait (T old, const memory_order mo=memory_order_seq_cst) const noexcept
 等待值改变
MSTL_ALWAYS_INLINE void notify_one () noexcept
 通知一个等待线程
MSTL_ALWAYS_INLINE void notify_all () noexcept
 通知所有等待线程
value_type fetch_add (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并添加操作
value_type fetch_sub (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并减去操作
value_type fetch_and (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并与操作
value_type fetch_or (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并或操作
value_type fetch_xor (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并异或操作
MSTL_ALWAYS_INLINE value_type operator++ (int) noexcept
 后置递增运算符
MSTL_ALWAYS_INLINE value_type operator-- (int) noexcept
 后置递减运算符
value_type operator++ () noexcept
 前置递增运算符
value_type operator-- () noexcept
 前置递减运算符
value_type operator+= (value_type value) noexcept
 加法赋值运算符
value_type operator-= (value_type value) noexcept
 减法赋值运算符
value_type operator&= (value_type value) noexcept
 位与赋值运算符
value_type operator|= (value_type value) noexcept
 位或赋值运算符
value_type operator^= (value_type value) noexcept
 位异或赋值运算符

静态 Public 属性

static constexpr size_t required_alignment = sizeof(T) > alignof(T) ? sizeof(T) : alignof(T)
 对齐需求
static constexpr bool is_always_lock_free = _MSTL is_always_lock_free<sizeof(T), required_alignment>()
 是否总是无锁

详细描述

template<typename T>
struct atomic_ref_base< T, true, false >

整数类型的原子引用特化

模板参数
T整数类型

在文件 atomic_base.hpp3042 行定义.

构造及析构函数说明

◆ atomic_ref_base()

template<typename T>
atomic_ref_base< T, true, false >::atomic_ref_base ( T & value)
inlineexplicit

构造函数

参数
value被引用的整数

在文件 atomic_base.hpp3066 行定义.

引用了 required_alignment.

成员函数说明

◆ compare_exchange_strong() [1/2]

template<typename T>
bool atomic_ref_base< T, true, false >::compare_exchange_strong ( T & expected,
T desire,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

简化版强比较交换操作

参数
expected期望值
desire期望设置的值
mo内存顺序
返回
是否交换成功

在文件 atomic_base.hpp3169 行定义.

引用了 _MSTL, atomic_cmpexch_strong(), cmpexch_failure_order() , 以及 memory_order_seq_cst.

◆ compare_exchange_strong() [2/2]

template<typename T>
bool atomic_ref_base< T, true, false >::compare_exchange_strong ( T & expected,
T desire,
const memory_order success,
const memory_order failure )
inlinenoexcept

强比较交换操作

参数
expected期望值
desire期望设置的值
success成功时的内存顺序
failure失败时的内存顺序
返回
是否交换成功

在文件 atomic_base.hpp3145 行定义.

引用了 _MSTL, atomic_cmpexch_strong() , 以及 success.

◆ compare_exchange_weak() [1/2]

template<typename T>
bool atomic_ref_base< T, true, false >::compare_exchange_weak ( T & expected,
T desire,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

简化版弱比较交换操作

参数
expected期望值
desire期望设置的值
mo内存顺序
返回
是否交换成功

在文件 atomic_base.hpp3157 行定义.

引用了 _MSTL, atomic_cmpexch_weak(), cmpexch_failure_order() , 以及 memory_order_seq_cst.

◆ compare_exchange_weak() [2/2]

template<typename T>
bool atomic_ref_base< T, true, false >::compare_exchange_weak ( T & expected,
T desire,
const memory_order success,
const memory_order failure )
inlinenoexcept

弱比较交换操作

参数
expected期望值
desire期望设置的值
success成功时的内存顺序
failure失败时的内存顺序
返回
是否交换成功

在文件 atomic_base.hpp3132 行定义.

引用了 _MSTL, atomic_cmpexch_weak() , 以及 success.

◆ exchange()

template<typename T>
T atomic_ref_base< T, true, false >::exchange ( T desire,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子交换操作

参数
desire要交换的值
mo内存顺序
返回
交换前的值

在文件 atomic_base.hpp3120 行定义.

引用了 _MSTL, atomic_exchange() , 以及 memory_order_seq_cst.

◆ fetch_add()

template<typename T>
value_type atomic_ref_base< T, true, false >::fetch_add ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并添加操作

参数
value要添加的值
mo内存顺序
返回
添加前的值

在文件 atomic_base.hpp3206 行定义.

引用了 _MSTL, atomic_fetch_add() , 以及 memory_order_seq_cst.

被这些函数引用 operator++().

◆ fetch_and()

template<typename T>
value_type atomic_ref_base< T, true, false >::fetch_and ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并与操作

参数
value要进行与操作的值
mo内存顺序
返回
操作前的值

在文件 atomic_base.hpp3226 行定义.

引用了 _MSTL, atomic_fetch_and() , 以及 memory_order_seq_cst.

◆ fetch_or()

template<typename T>
value_type atomic_ref_base< T, true, false >::fetch_or ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并或操作

参数
value要进行或操作的值
mo内存顺序
返回
操作前的值

在文件 atomic_base.hpp3236 行定义.

引用了 _MSTL, atomic_fetch_or() , 以及 memory_order_seq_cst.

◆ fetch_sub()

template<typename T>
value_type atomic_ref_base< T, true, false >::fetch_sub ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并减去操作

参数
value要减去的值
mo内存顺序
返回
减去前的值

在文件 atomic_base.hpp3216 行定义.

引用了 _MSTL, atomic_fetch_sub() , 以及 memory_order_seq_cst.

被这些函数引用 operator--().

◆ fetch_xor()

template<typename T>
value_type atomic_ref_base< T, true, false >::fetch_xor ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并异或操作

参数
value要进行异或操作的值
mo内存顺序
返回
操作前的值

在文件 atomic_base.hpp3246 行定义.

引用了 _MSTL, atomic_fetch_xor() , 以及 memory_order_seq_cst.

◆ is_lock_free()

template<typename T>
MSTL_NODISCARD bool atomic_ref_base< T, true, false >::is_lock_free ( ) const
inlinenoexcept

检查是否支持无锁操作

返回
是否支持无锁

在文件 atomic_base.hpp3092 行定义.

引用了 is_always_lock_free.

◆ load()

template<typename T>
T atomic_ref_base< T, true, false >::load ( const memory_order mo = memory_order_seq_cst) const
inlinenoexcept

原子加载操作

参数
mo内存顺序
返回
加载的值

在文件 atomic_base.hpp3110 行定义.

引用了 _MSTL, atomic_load() , 以及 memory_order_seq_cst.

被这些函数引用 operator T() , 以及 wait().

◆ operator T()

template<typename T>
MSTL_NODISCARD atomic_ref_base< T, true, false >::operator T ( ) const
inlinenoexcept

类型转换运算符

返回
当前值

在文件 atomic_base.hpp3084 行定义.

引用了 load().

◆ operator&=()

template<typename T>
value_type atomic_ref_base< T, true, false >::operator&= ( value_type value)
inlinenoexcept

位与赋值运算符

参数
value要进行与操作的值
返回
与操作后的值

在文件 atomic_base.hpp3305 行定义.

引用了 _MSTL , 以及 atomic_and_fetch().

◆ operator++() [1/2]

template<typename T>
value_type atomic_ref_base< T, true, false >::operator++ ( )
inlinenoexcept

前置递增运算符

返回
递增后的值

在文件 atomic_base.hpp3270 行定义.

引用了 _MSTL , 以及 atomic_add_fetch().

◆ operator++() [2/2]

template<typename T>
MSTL_ALWAYS_INLINE value_type atomic_ref_base< T, true, false >::operator++ ( int )
inlinenoexcept

后置递增运算符

返回
递增前的值

在文件 atomic_base.hpp3254 行定义.

引用了 fetch_add().

◆ operator+=()

template<typename T>
value_type atomic_ref_base< T, true, false >::operator+= ( value_type value)
inlinenoexcept

加法赋值运算符

参数
value要加的值
返回
加法后的值

在文件 atomic_base.hpp3287 行定义.

引用了 _MSTL , 以及 atomic_add_fetch().

◆ operator--() [1/2]

template<typename T>
value_type atomic_ref_base< T, true, false >::operator-- ( )
inlinenoexcept

前置递减运算符

返回
递减后的值

在文件 atomic_base.hpp3278 行定义.

引用了 _MSTL , 以及 atomic_sub_fetch().

◆ operator--() [2/2]

template<typename T>
MSTL_ALWAYS_INLINE value_type atomic_ref_base< T, true, false >::operator-- ( int )
inlinenoexcept

后置递减运算符

返回
递减前的值

在文件 atomic_base.hpp3262 行定义.

引用了 fetch_sub().

◆ operator-=()

template<typename T>
value_type atomic_ref_base< T, true, false >::operator-= ( value_type value)
inlinenoexcept

减法赋值运算符

参数
value要减的值
返回
减法后的值

在文件 atomic_base.hpp3296 行定义.

引用了 _MSTL , 以及 atomic_sub_fetch().

◆ operator=()

template<typename T>
T atomic_ref_base< T, true, false >::operator= ( T value)
inlinenoexcept

赋值运算符

参数
value要设置的值
返回
设置后的值

在文件 atomic_base.hpp3075 行定义.

引用了 store().

◆ operator^=()

template<typename T>
value_type atomic_ref_base< T, true, false >::operator^= ( value_type value)
inlinenoexcept

位异或赋值运算符

参数
value要进行异或操作的值
返回
异或操作后的值

在文件 atomic_base.hpp3323 行定义.

引用了 _MSTL , 以及 atomic_xor_fetch().

◆ operator|=()

template<typename T>
value_type atomic_ref_base< T, true, false >::operator|= ( value_type value)
inlinenoexcept

位或赋值运算符

参数
value要进行或操作的值
返回
或操作后的值

在文件 atomic_base.hpp3314 行定义.

引用了 _MSTL , 以及 atomic_or_fetch().

◆ store()

template<typename T>
void atomic_ref_base< T, true, false >::store ( T value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子存储操作

参数
value要存储的值
mo内存顺序

在文件 atomic_base.hpp3101 行定义.

引用了 _MSTL, atomic_store() , 以及 memory_order_seq_cst.

被这些函数引用 operator=().

◆ wait()

template<typename T>
MSTL_ALWAYS_INLINE void atomic_ref_base< T, true, false >::wait ( T old,
const memory_order mo = memory_order_seq_cst ) const
inlinenoexcept

等待值改变

参数
old期望的旧值
mo内存顺序

在文件 atomic_base.hpp3180 行定义.

引用了 _MSTL, atomic_wait_address_v(), load() , 以及 memory_order_seq_cst.


该结构体的文档由以下文件生成: