|
| 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> |
| T | atomic_fetch_add_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| | 通用原子获取并添加操作
|
| template<typename T> |
| T | atomic_fetch_sub_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| | 通用原子获取并减去操作
|
| template<typename T> |
| T | atomic_add_fetch_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept |
| | 通用原子添加并获取操作
|
| template<typename T> |
| 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 中定义.