NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
memory_order.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_ASYNC_MEMORY_ORDER_HPP__
2#define NEFORCE_CORE_ASYNC_MEMORY_ORDER_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
14
20
122
137
139NEFORCE_INLINE17 constexpr auto memory_order_relaxed = memory_order::relaxed;
141NEFORCE_INLINE17 constexpr auto memory_order_consume = memory_order::consume;
143NEFORCE_INLINE17 constexpr auto memory_order_acquire = memory_order::acquire;
145NEFORCE_INLINE17 constexpr auto memory_order_release = memory_order::release;
147NEFORCE_INLINE17 constexpr auto memory_order_acq_rel = memory_order::acq_rel;
149NEFORCE_INLINE17 constexpr auto memory_order_seq_cst = memory_order::seq_cst;
150
151
164
174 return static_cast<memory_order>(static_cast<int64_t>(mo) | static_cast<int64_t>(mod));
175}
176
186 return static_cast<memory_order>(static_cast<int64_t>(mo) & static_cast<int64_t>(mod));
187}
188
189
202constexpr memory_order cmpexch_failure_order(const memory_order mo) noexcept {
203 constexpr auto mask = memory_order_modifier::memory_order_mask;
204 const memory_order base_mo = mo & mask;
205 const memory_order failure_order = base_mo == memory_order_acq_rel ? memory_order_acquire
207 : base_mo;
208 constexpr auto modifier_mask = memory_order_modifier::memory_order_modifier_mask;
209 const auto modifiers = static_cast<memory_order_modifier>(mo & modifier_mask);
210 return failure_order | modifiers;
211}
212
223 // MemoryOrder
225 // AsyncComponents
227
228NEFORCE_END_NAMESPACE__
229#endif // NEFORCE_CORE_ASYNC_MEMORY_ORDER_HPP__
long long int64_t
64位有符号整数类型
int int32_t
32位有符号整数类型
NEFORCE_CONST_FUNCTION NEFORCE_CONSTEXPR14 enable_if_t< is_floating_point_v< T >, T > mod(const T x, const T y)
浮点数取模运算
constexpr bool is_valid_cmpexch_failure_order(const memory_order mo) noexcept
检查比较交换失败内存顺序是否有效
NEFORCE_INLINE17 constexpr auto memory_order_acq_rel
获取-释放内存顺序常量
constexpr memory_order operator|(memory_order mo, memory_order_modifier mod) noexcept
内存顺序与修饰符的或操作符
NEFORCE_INLINE17 constexpr auto memory_order_consume
数据依赖内存顺序常量
NEFORCE_INLINE17 constexpr auto memory_order_release
释放内存顺序常量
NEFORCE_INLINE17 constexpr auto memory_order_seq_cst
顺序一致性内存顺序常量
constexpr memory_order operator&(memory_order mo, memory_order_modifier mod) noexcept
内存顺序与修饰符的与操作符
NEFORCE_INLINE17 constexpr auto memory_order_relaxed
宽松内存顺序常量
NEFORCE_INLINE17 constexpr auto memory_order_acquire
获取内存顺序常量
memory_order
内存顺序
memory_order_modifier
内存顺序修饰符枚举
constexpr memory_order cmpexch_failure_order(const memory_order mo) noexcept
获取原子比较交换操作失败时的内存顺序
@ release
释放操作,确保前面的读写不会被重排到后面
@ seq_cst
顺序一致性,最严格的内存顺序
@ relaxed
最宽松的内存顺序,只保证原子性
@ acquire
获取操作,确保后续读写不会被重排到前面
@ consume
数据依赖顺序,用于依赖读取的场景
@ acq_rel
获取-释放组合操作
@ memory_order_mask
内存顺序掩码
@ memory_order_modifier_mask
修饰符掩码
@ memory_order_hle_acquire
HLE获取修饰符
@ memory_order_hle_release
HLE释放修饰符
基本类型别名