MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
atomic_base.hpp 文件参考

MSTL原子操作基本工具 更多...

#include "atomic_wait.hpp"
atomic_base.hpp 的引用(Include)关系图:

浏览该文件的源代码.

struct  atomic_flag
 原子标志 更多...
struct  atomic_base< T >
 原子类型基础模板类 更多...
struct  atomic_base< T * >
 指针类型的原子操作特化 更多...
struct  atomic_float_base< Float >
 浮点数原子操作基础类 更多...
struct  atomic_ref_base< T, false, false >
 通用类型的原子引用特化 更多...
struct  atomic_ref_base< T, true, false >
 整数类型的原子引用特化 更多...
struct  atomic_ref_base< Float, false, true >
 浮点类型的原子引用特化 更多...

类型定义

template<typename T>
using atomic_diff_t = conditional_t<is_pointer_v<T>, ptrdiff_t, remove_volatile_t<T>>
 原子操作的差值类型

枚举

enum class  memory_order : int32_t {
  memory_order::relaxed , memory_order::consume , memory_order::acquire , memory_order::release ,
  memory_order::acq_rel , memory_order::seq_cst
}
 内存顺序 更多...
enum class  memory_order_modifier : int64_t { memory_order_modifier::memory_order_mask = 0x0ffff , memory_order_modifier::memory_order_modifier_mask = 0xffff0000 , memory_order_modifier::memory_order_hle_acquire = 0x10000 , memory_order_modifier::memory_order_hle_release = 0x20000 }
 内存顺序修饰符枚举 更多...

函数

constexpr memory_order operator| (memory_order mo, memory_order_modifier mod) noexcept
 内存顺序与修饰符的或操作符
constexpr memory_order operator& (memory_order mo, memory_order_modifier mod) noexcept
 内存顺序与修饰符的与操作符
constexpr memory_order cmpexch_failure_order (const memory_order mo) noexcept
 获取原子比较交换操作失败时的内存顺序
constexpr bool is_valid_cmpexch_failure_order (const memory_order mo) noexcept
 检查比较交换失败内存顺序是否有效
MSTL_ALWAYS_INLINE_INLINE void atomic_thread_fence (const memory_order mo) noexcept
 线程内存屏障
MSTL_ALWAYS_INLINE_INLINE void atomic_signal_fence (const memory_order mo) noexcept
 信号内存屏障
template<typename T>
MSTL_ALWAYS_INLINE_INLINE void atomic_store (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子存储操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_load (const volatile T *ptr, const memory_order mo) noexcept
 原子加载操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_exchange (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子交换操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE bool atomic_cmpexch_weak (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > desired, const memory_order success, const memory_order failure) noexcept
 弱比较交换操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE bool atomic_cmpexch_strong (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > desired, const memory_order success, const memory_order failure) noexcept
 强比较交换操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_fetch_add (volatile T *ptr, atomic_diff_t< T > value, const memory_order mo) noexcept
 原子获取并添加操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_fetch_sub (volatile T *ptr, atomic_diff_t< T > value, const memory_order mo) noexcept
 原子获取并减去操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_fetch_and (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子获取并与操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_fetch_or (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子获取并或操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_fetch_xor (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子获取并异或操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_add_fetch (volatile T *ptr, atomic_diff_t< T > value, memory_order mo) noexcept
 原子添加并获取操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_sub_fetch (volatile T *ptr, atomic_diff_t< T > value, memory_order mo) noexcept
 原子减去并获取操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_and_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 原子与并获取操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_or_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 原子或并获取操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_xor_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 原子异或并获取操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE bool atomic_cmpexch_weak_any (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > *desired, const memory_order success, const memory_order failure) noexcept
 通用弱比较交换操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE bool atomic_cmpexch_strong_any (volatile T *ptr, remove_volatile_t< T > *expected, remove_volatile_t< T > *desired, const memory_order success, const memory_order failure) noexcept
 通用强比较交换操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE void atomic_store_any (T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 通用原子存储操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_load_any (const T *ptr, memory_order mo) noexcept
 通用原子加载操作
template<typename T>
MSTL_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_exchange_any (T *ptr, remove_volatile_t< T > desired, memory_order mo) noexcept
 通用原子交换操作
template<typename T>
atomic_fetch_add_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子获取并添加操作
template<typename T>
atomic_fetch_sub_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子获取并减去操作
template<typename T>
atomic_add_fetch_any (T *ptr, remove_volatile_t< T > value) noexcept
 通用原子添加并获取操作
template<typename T>
atomic_sub_fetch_any (T *ptr, remove_volatile_t< T > value) noexcept
 通用原子减去并获取操作
template<size_t Size, size_t Align>
constexpr bool is_always_lock_free () noexcept
 检查是否支持无锁操作

变量

MSTL_INLINE17 constexpr auto memory_order_relaxed = memory_order::relaxed
 宽松内存顺序常量
MSTL_INLINE17 constexpr auto memory_order_consume = memory_order::consume
 数据依赖内存顺序常量
MSTL_INLINE17 constexpr auto memory_order_acquire = memory_order::acquire
 获取内存顺序常量
MSTL_INLINE17 constexpr auto memory_order_release = memory_order::release
 释放内存顺序常量
MSTL_INLINE17 constexpr auto memory_order_acq_rel = memory_order::acq_rel
 获取-释放内存顺序常量
MSTL_INLINE17 constexpr auto memory_order_seq_cst = memory_order::seq_cst
 顺序一致性内存顺序常量

详细描述

MSTL原子操作基本工具

此文件提供了原子操作的基本工具,包括内存序定义、原子类型基础类等。

在文件 atomic_base.hpp 中定义.