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

指针类型的原子操作特化 更多...

#include <atomic_base.hpp>

类 atomic_base< T * > 继承关系图:
[图例]

Public 类型

using value_type = T*
 指针类型
using difference_type = ptrdiff_t
 差值类型

Public 成员函数

constexpr atomic_base (const value_type ptr) noexcept
 构造函数
 operator value_type () const noexcept
 类型转换运算符
 operator value_type () const volatile noexcept
 volatile版本的类型转换运算符
value_type operator= (const value_type ptr) noexcept
 赋值运算符
value_type operator= (const value_type ptr) volatile noexcept
 volatile版本的赋值运算符
value_type operator++ (int) noexcept
 后置递增运算符
value_type operator++ (int) volatile noexcept
 volatile版本的后置递增运算符
value_type operator-- (int) noexcept
 后置递减运算符
value_type operator-- (int) volatile noexcept
 volatile版本的后置递减运算符
value_type operator++ () noexcept
 前置递增运算符
value_type operator++ () volatile noexcept
 volatile版本的前置递增运算符
value_type operator-- () noexcept
 前置递减运算符
value_type operator-- () volatile noexcept
 volatile版本的前置递减运算符
value_type operator+= (const ptrdiff_t dest) noexcept
 指针加法赋值运算符
value_type operator+= (const ptrdiff_t dest) volatile noexcept
 volatile版本的指针加法赋值运算符
value_type operator-= (const ptrdiff_t dest) noexcept
 指针减法赋值运算符
value_type operator-= (const ptrdiff_t dest) volatile noexcept
 volatile版本的指针减法赋值运算符
bool is_lock_free () const noexcept
 检查是否支持无锁操作
bool is_lock_free () const volatile noexcept
 volatile版本的检查是否支持无锁操作
MSTL_ALWAYS_INLINE void store (const value_type ptr, const memory_order mo=memory_order_seq_cst) noexcept
 原子存储指针操作
MSTL_ALWAYS_INLINE_INLINE void store (const value_type ptr, const memory_order mo=memory_order_seq_cst) volatile noexcept
 volatile版本的原子存储指针操作
MSTL_ALWAYS_INLINE value_type load (const memory_order mo=memory_order_seq_cst) const noexcept
 原子加载指针操作
MSTL_ALWAYS_INLINE_INLINE value_type load (const memory_order mo=memory_order_seq_cst) const volatile noexcept
 volatile版本的原子加载指针操作
MSTL_ALWAYS_INLINE value_type exchange (const value_type ptr, const memory_order mo=memory_order_seq_cst) noexcept
 原子交换指针操作
MSTL_ALWAYS_INLINE_INLINE value_type exchange (const value_type ptr, const memory_order mo=memory_order_seq_cst) volatile noexcept
 volatile版本的原子交换指针操作
MSTL_ALWAYS_INLINE bool compare_exchange_weak (value_type &expected, value_type desired, const memory_order success, const memory_order failure) noexcept
 弱比较交换指针操作
MSTL_ALWAYS_INLINE_INLINE bool compare_exchange_weak (value_type &expected, value_type desired, const memory_order success, const memory_order failure) volatile noexcept
 volatile版本的弱比较交换指针操作
MSTL_ALWAYS_INLINE bool compare_exchange_weak (value_type &expected, value_type desired, const memory_order mo=memory_order_seq_cst) noexcept
 简化版弱比较交换指针操作
MSTL_ALWAYS_INLINE bool compare_exchange_weak (value_type &expected, value_type desired, const memory_order mo=memory_order_seq_cst) volatile noexcept
 volatile版本的简化版弱比较交换指针操作
MSTL_ALWAYS_INLINE bool compare_exchange_strong (value_type &expected, value_type desired, const memory_order success, const memory_order failure) noexcept
 强比较交换指针操作
MSTL_ALWAYS_INLINE_INLINE bool compare_exchange_strong (value_type &expected, value_type desired, const memory_order success, const memory_order failure) volatile noexcept
 volatile版本的强比较交换指针操作
MSTL_ALWAYS_INLINE bool compare_exchange_strong (value_type &expected, value_type desired, const memory_order mo=memory_order_seq_cst) noexcept
 简化版强比较交换指针操作
MSTL_ALWAYS_INLINE bool compare_exchange_strong (value_type &expected, value_type desired, const memory_order mo=memory_order_seq_cst) volatile noexcept
 volatile版本的简化版强比较交换指针操作
MSTL_ALWAYS_INLINE void wait (value_type 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
 通知所有等待线程
MSTL_ALWAYS_INLINE value_type fetch_add (const ptrdiff_t dest, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并添加指针偏移
MSTL_ALWAYS_INLINE_INLINE value_type fetch_add (const ptrdiff_t dest, const memory_order mo=memory_order_seq_cst) volatile noexcept
 volatile版本的原子获取并添加指针偏移
MSTL_ALWAYS_INLINE value_type fetch_sub (const ptrdiff_t dest, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并减去指针偏移
MSTL_ALWAYS_INLINE_INLINE value_type fetch_sub (const ptrdiff_t dest, const memory_order mo=memory_order_seq_cst) volatile noexcept
 volatile版本的原子获取并减去指针偏移
value_type operator&= (value_type value) noexcept
 位与赋值运算符
value_type operator|= (value_type value) noexcept
 位或赋值运算符
value_type operator^= (value_type value) noexcept
 位异或赋值运算符
MSTL_ALWAYS_INLINE value_type fetch_and (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并与操作
MSTL_ALWAYS_INLINE value_type fetch_or (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并或操作
MSTL_ALWAYS_INLINE value_type fetch_xor (value_type value, const memory_order mo=memory_order_seq_cst) noexcept
 原子获取并异或操作

静态 Public 属性

static constexpr bool is_always_lock_free = _MSTL is_always_lock_free<sizeof(value_type), alignof(value_type)>()
 是否总是无锁

详细描述

template<typename T>
struct atomic_base< T * >

指针类型的原子操作特化

模板参数
T指针指向的类型

提供指针类型的原子操作实现,支持指针算术运算。

在文件 atomic_base.hpp2023 行定义.

构造及析构函数说明

◆ atomic_base()

template<typename T>
atomic_base< T * >::atomic_base ( const value_type ptr)
inlineconstexprnoexcept

构造函数

参数
ptr初始指针

在文件 atomic_base.hpp2056 行定义.

成员函数说明

◆ compare_exchange_strong() [1/2]

template<typename T>
MSTL_ALWAYS_INLINE bool atomic_base< T * >::compare_exchange_strong ( value_type & expected,
value_type desired,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

简化版强比较交换指针操作

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

在文件 atomic_base.hpp2479 行定义.

引用了 cmpexch_failure_order(), atomic_base< T >::compare_exchange_strong() , 以及 memory_order_seq_cst.

◆ compare_exchange_strong() [2/2]

template<typename T>
MSTL_ALWAYS_INLINE bool atomic_base< T * >::compare_exchange_strong ( value_type & expected,
value_type desired,
const memory_order success,
const memory_order failure )
inlinenoexcept

强比较交换指针操作

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

在文件 atomic_base.hpp2450 行定义.

引用了 _MSTL, addressof(), atomic_cmpexch_strong_any(), is_valid_cmpexch_failure_order() , 以及 success.

◆ compare_exchange_weak() [1/2]

template<typename T>
MSTL_ALWAYS_INLINE bool atomic_base< T * >::compare_exchange_weak ( value_type & expected,
value_type desired,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

简化版弱比较交换指针操作

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

在文件 atomic_base.hpp2425 行定义.

引用了 cmpexch_failure_order(), atomic_base< T >::compare_exchange_weak() , 以及 memory_order_seq_cst.

◆ compare_exchange_weak() [2/2]

template<typename T>
MSTL_ALWAYS_INLINE bool atomic_base< T * >::compare_exchange_weak ( value_type & expected,
value_type desired,
const memory_order success,
const memory_order failure )
inlinenoexcept

弱比较交换指针操作

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

在文件 atomic_base.hpp2395 行定义.

引用了 _MSTL, addressof(), atomic_cmpexch_weak_any(), is_valid_cmpexch_failure_order() , 以及 success.

◆ exchange()

template<typename T>
MSTL_ALWAYS_INLINE value_type atomic_base< T * >::exchange ( const value_type ptr,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子交换指针操作

参数
ptr要交换的指针
mo内存顺序
返回
交换前的指针

在文件 atomic_base.hpp2354 行定义.

引用了 memory_order_seq_cst.

◆ fetch_add()

template<typename T>
MSTL_ALWAYS_INLINE value_type atomic_base< T * >::fetch_add ( const ptrdiff_t dest,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并添加指针偏移

参数
dest要增加的元素数量
mo内存顺序
返回
添加前的指针

在文件 atomic_base.hpp2526 行定义.

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

◆ fetch_and()

MSTL_ALWAYS_INLINE value_type atomic_base< T >::fetch_and ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并与操作

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

在文件 atomic_base.hpp1965 行定义.

◆ fetch_or()

MSTL_ALWAYS_INLINE value_type atomic_base< T >::fetch_or ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并或操作

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

在文件 atomic_base.hpp1984 行定义.

◆ fetch_sub()

template<typename T>
MSTL_ALWAYS_INLINE value_type atomic_base< T * >::fetch_sub ( const ptrdiff_t dest,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并减去指针偏移

参数
dest要减少的元素数量
mo内存顺序
返回
减去前的指针

在文件 atomic_base.hpp2545 行定义.

引用了 memory_order_seq_cst.

◆ fetch_xor()

MSTL_ALWAYS_INLINE value_type atomic_base< T >::fetch_xor ( value_type value,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子获取并异或操作

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

在文件 atomic_base.hpp2003 行定义.

◆ is_lock_free()

template<typename T>
bool atomic_base< T * >::is_lock_free ( ) const
inlinenoexcept

检查是否支持无锁操作

返回
是否支持无锁

在文件 atomic_base.hpp2252 行定义.

引用了 is_always_lock_free.

◆ load()

template<typename T>
MSTL_ALWAYS_INLINE value_type atomic_base< T * >::load ( const memory_order mo = memory_order_seq_cst) const
inlinenoexcept

原子加载指针操作

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

在文件 atomic_base.hpp2313 行定义.

引用了 memory_order_acq_rel, memory_order_acquire, memory_order_mask, memory_order_release , 以及 memory_order_seq_cst.

◆ operator value_type()

template<typename T>
atomic_base< T * >::operator value_type ( ) const
inlinenoexcept

类型转换运算符

返回
当前指针值

在文件 atomic_base.hpp2063 行定义.

引用了 atomic_base< T >::load().

◆ operator&=()

value_type atomic_base< T >::operator&= ( value_type value)
inlinenoexcept

位与赋值运算符

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

在文件 atomic_base.hpp1671 行定义.

◆ operator++() [1/2]

template<typename T>
value_type atomic_base< T * >::operator++ ( )
inlinenoexcept

前置递增运算符

返回
递增后的指针

在文件 atomic_base.hpp2126 行定义.

引用了 memory_order_seq_cst.

◆ operator++() [2/2]

template<typename T>
value_type atomic_base< T * >::operator++ ( int )
inlinenoexcept

后置递增运算符

返回
递增前的指针

在文件 atomic_base.hpp2096 行定义.

引用了 atomic_base< T >::fetch_add().

◆ operator+=()

template<typename T>
value_type atomic_base< T * >::operator+= ( const ptrdiff_t dest)
inlinenoexcept

指针加法赋值运算符

参数
dest要增加的元素数量
返回
增加后的指针

在文件 atomic_base.hpp2189 行定义.

引用了 memory_order_seq_cst.

◆ operator--() [1/2]

template<typename T>
value_type atomic_base< T * >::operator-- ( )
inlinenoexcept

前置递减运算符

返回
递减后的指针

在文件 atomic_base.hpp2157 行定义.

引用了 memory_order_seq_cst.

◆ operator--() [2/2]

template<typename T>
value_type atomic_base< T * >::operator-- ( int )
inlinenoexcept

后置递减运算符

返回
递减前的指针

在文件 atomic_base.hpp2111 行定义.

引用了 atomic_base< T >::fetch_sub().

◆ operator-=()

template<typename T>
value_type atomic_base< T * >::operator-= ( const ptrdiff_t dest)
inlinenoexcept

指针减法赋值运算符

参数
dest要减少的元素数量
返回
减少后的指针

在文件 atomic_base.hpp2221 行定义.

引用了 memory_order_seq_cst.

◆ operator=()

template<typename T>
value_type atomic_base< T * >::operator= ( const value_type ptr)
inlinenoexcept

赋值运算符

参数
ptr要设置的指针
返回
设置后的指针

在文件 atomic_base.hpp2079 行定义.

引用了 atomic_base< T >::store().

◆ operator^=()

value_type atomic_base< T >::operator^= ( value_type value)
inlinenoexcept

位异或赋值运算符

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

在文件 atomic_base.hpp1703 行定义.

◆ operator|=()

value_type atomic_base< T >::operator|= ( value_type value)
inlinenoexcept

位或赋值运算符

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

在文件 atomic_base.hpp1687 行定义.

◆ store()

template<typename T>
MSTL_ALWAYS_INLINE void atomic_base< T * >::store ( const value_type ptr,
const memory_order mo = memory_order_seq_cst )
inlinenoexcept

原子存储指针操作

参数
ptr要存储的指针
mo内存顺序

在文件 atomic_base.hpp2269 行定义.

引用了 memory_order_acq_rel, memory_order_acquire, memory_order_consume, memory_order_mask, memory_order_release , 以及 memory_order_seq_cst.

◆ wait()

template<typename T>
MSTL_ALWAYS_INLINE void atomic_base< T * >::wait ( value_type old,
const memory_order mo = memory_order_seq_cst ) const
inlinenoexcept

等待指针改变

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

在文件 atomic_base.hpp2499 行定义.

引用了 _MSTL, atomic_wait_address_v(), atomic_base< T >::load() , 以及 memory_order_seq_cst.


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