NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
atomic_base.hpp 文件参考

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

#include "NeForce/core/async/atomic_wait.hpp"
#include "NeForce/core/async/memory_order.hpp"
#include "NeForce/core/exception/debug.hpp"
#include <intrin.h>
#include <intrin0.inl.h>
atomic_base.hpp 的引用(Include)关系图:

浏览该文件的源代码.

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

类型定义

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

函数

void neforce::atomic_thread_fence (const memory_order mo) noexcept
 线程内存屏障
void neforce::atomic_signal_fence (const memory_order mo) noexcept
 信号内存屏障
template<typename T>
void neforce::atomic_store (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子存储操作
template<typename T>
remove_volatile_t< T > neforce::atomic_load (const volatile T *ptr, const memory_order mo) noexcept
 原子加载操作
template<typename T>
remove_volatile_t< T > neforce::atomic_exchange (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子交换操作
template<typename T>
bool neforce::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>
bool neforce::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>
remove_volatile_t< T > neforce::atomic_fetch_add (volatile T *ptr, atomic_diff_t< T > value, const memory_order mo) noexcept
 原子获取并添加操作
template<typename T>
remove_volatile_t< T > neforce::atomic_fetch_sub (volatile T *ptr, atomic_diff_t< T > value, const memory_order mo) noexcept
 原子获取并减去操作
template<typename T>
remove_volatile_t< T > neforce::atomic_fetch_and (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子获取并与操作
template<typename T>
remove_volatile_t< T > neforce::atomic_fetch_or (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子获取并或操作
template<typename T>
remove_volatile_t< T > neforce::atomic_fetch_xor (volatile T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 原子获取并异或操作
template<typename T>
remove_volatile_t< T > neforce::atomic_add_fetch (volatile T *ptr, atomic_diff_t< T > value, memory_order mo) noexcept
 原子添加并获取操作
template<typename T>
remove_volatile_t< T > neforce::atomic_sub_fetch (volatile T *ptr, atomic_diff_t< T > value, memory_order mo) noexcept
 原子减去并获取操作
template<typename T>
remove_volatile_t< T > neforce::atomic_and_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 原子与并获取操作
template<typename T>
remove_volatile_t< T > neforce::atomic_or_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 原子或并获取操作
template<typename T>
remove_volatile_t< T > neforce::atomic_xor_fetch (volatile T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 原子异或并获取操作
template<typename T>
bool neforce::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>
bool neforce::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>
void neforce::atomic_store_any (T *ptr, remove_volatile_t< T > value, const memory_order mo) noexcept
 通用原子存储操作
template<typename T>
remove_volatile_t< T > neforce::atomic_load_any (const T *ptr, memory_order mo) noexcept
 通用原子加载操作
template<typename T>
remove_volatile_t< T > neforce::atomic_exchange_any (T *ptr, remove_volatile_t< T > desired, memory_order mo) noexcept
 通用原子交换操作
template<typename T>
neforce::atomic_fetch_add_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子获取并添加操作
template<typename T>
neforce::atomic_fetch_sub_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子获取并减去操作
template<typename T>
neforce::atomic_add_fetch_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子添加并获取操作
template<typename T>
neforce::atomic_sub_fetch_any (T *ptr, remove_volatile_t< T > value, memory_order mo) noexcept
 通用原子减去并获取操作
template<size_t Size, size_t Align>
constexpr bool neforce::is_always_lock_free () noexcept
 检查是否支持无锁操作

详细描述

原子操作基本工具

此文件提供了原子操作的基本工具,包括原子操作与原子基础类。

在文件 atomic_base.hpp 中定义.