MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
原子内存序

原子内存顺序行为 更多...

枚举

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
 信号内存屏障

变量

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
 顺序一致性内存顺序常量

详细描述

原子内存顺序行为

枚举类型说明

◆ memory_order

enum class memory_order : int32_t
strong

内存顺序

定义原子操作的内存顺序语义,控制不同线程间的内存可见性顺序。

枚举值
relaxed 

最宽松的内存顺序,只保证原子性

consume 

数据依赖顺序,用于依赖读取的场景

acquire 

获取操作,确保后续读写不会被重排到前面

release 

释放操作,确保前面的读写不会被重排到后面

acq_rel 

获取-释放组合操作

seq_cst 

顺序一致性,最严格的内存顺序

在文件 atomic_base.hpp29 行定义.

◆ memory_order_modifier

enum class memory_order_modifier : int64_t
strong

内存顺序修饰符枚举

用于扩展memory_order的功能,支持硬件锁消除(HLE)等高级特性。

枚举值
memory_order_mask 

内存顺序掩码

memory_order_modifier_mask 

修饰符掩码

memory_order_hle_acquire 

HLE获取修饰符

memory_order_hle_release 

HLE释放修饰符

在文件 atomic_base.hpp58 行定义.

函数说明

◆ atomic_signal_fence()

MSTL_ALWAYS_INLINE_INLINE void atomic_signal_fence ( const memory_order mo)
noexcept

信号内存屏障

参数
mo内存顺序

在同一线程内的信号处理程序和普通代码间插入内存屏障。

在文件 atomic_base.hpp162 行定义.

引用了 memory_order_relaxed.

◆ atomic_thread_fence()

MSTL_ALWAYS_INLINE_INLINE void atomic_thread_fence ( const memory_order mo)
noexcept

线程内存屏障

参数
mo内存顺序

在不同线程间插入内存屏障,确保内存操作的顺序性。

在文件 atomic_base.hpp132 行定义.

引用了 memory_order_acquire, memory_order_consume, memory_order_relaxed , 以及 memory_order_seq_cst.

◆ cmpexch_failure_order()

memory_order cmpexch_failure_order ( const memory_order mo)
constexprnoexcept

获取原子比较交换操作失败时的内存顺序

对于原子比较交换(compare-exchange)操作,成功和失败的内存顺序可以不同。 此函数根据给定的内存顺序,返回对应的失败内存顺序。

转换规则:

在文件 atomic_base.hpp102 行定义.

引用了 memory_order_acq_rel, memory_order_acquire, memory_order_mask, memory_order_modifier_mask, memory_order_relaxed , 以及 memory_order_release.

被这些函数引用 atomic< int8_t >::compare_exchange_strong(), atomic< int8_t >::compare_exchange_strong(), atomic_base< char >::compare_exchange_strong(), atomic_base< char >::compare_exchange_strong(), atomic_base< T * >::compare_exchange_strong(), atomic_base< T * >::compare_exchange_strong(), atomic_float_base< Float >::compare_exchange_strong(), atomic_float_base< Float >::compare_exchange_strong(), atomic_ref_base< Float, false, true >::compare_exchange_strong(), atomic_ref_base< T, false, false >::compare_exchange_strong(), atomic_ref_base< T, true, false >::compare_exchange_strong(), atomic< int8_t >::compare_exchange_weak(), atomic< int8_t >::compare_exchange_weak(), atomic_base< char >::compare_exchange_weak(), atomic_base< char >::compare_exchange_weak(), atomic_base< T * >::compare_exchange_weak(), atomic_base< T * >::compare_exchange_weak(), atomic_float_base< Float >::compare_exchange_weak(), atomic_float_base< Float >::compare_exchange_weak(), atomic_ref_base< Float, false, true >::compare_exchange_weak(), atomic_ref_base< T, false, false >::compare_exchange_weak() , 以及 atomic_ref_base< T, true, false >::compare_exchange_weak().

◆ is_valid_cmpexch_failure_order()

bool is_valid_cmpexch_failure_order ( const memory_order mo)
constexprnoexcept

◆ operator&()

memory_order operator& ( memory_order mo,
memory_order_modifier mod )
constexprnoexcept

内存顺序与修饰符的与操作符

参数
mo内存顺序
mod内存顺序修饰符
返回
提取后的内存顺序
注解
用于从组合值中提取特定的内存顺序或修饰符

在文件 atomic_base.hpp85 行定义.

◆ operator|()

memory_order operator| ( memory_order mo,
memory_order_modifier mod )
constexprnoexcept

内存顺序与修饰符的或操作符

参数
mo内存顺序
mod内存顺序修饰符
返回
组合后的内存顺序
注解
用于将内存顺序与修饰符组合使用

在文件 atomic_base.hpp73 行定义.