NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
atomic_base.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>>
 原子操作的差值类型

函数

NEFORCE_ALWAYS_INLINE_INLINE void atomic_thread_fence (const memory_order mo) noexcept
 线程内存屏障
NEFORCE_ALWAYS_INLINE_INLINE void atomic_signal_fence (const memory_order mo) noexcept
 信号内存屏障
template<typename T>
NEFORCE_ALWAYS_INLINE_INLINE void atomic_store (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子存储操作
template<typename T>
NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_load (const volatile T *ptr, const memory_order mo) noexcept
 原子加载操作
template<typename T>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_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>
NEFORCE_ALWAYS_INLINE_INLINE void atomic_store_any (T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 通用原子存储操作
template<typename T>
NEFORCE_ALWAYS_INLINE_INLINE remove_volatile_t< T > atomic_load_any (const T *ptr, memory_order mo) noexcept
 通用原子加载操作
template<typename T>
NEFORCE_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, memory_order mo) noexcept
 通用原子添加并获取操作
template<typename T>
atomic_sub_fetch_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子减去并获取操作
template<size_t Size, size_t Align>
NEFORCE_CONSTEXPR17 bool is_always_lock_free () noexcept
 检查是否支持无锁操作

详细描述

原子操作基本工具

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

在文件 atomic_base.hpp 中定义.