|
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 |
| 顺序一致性内存顺序常量 | |
原子内存顺序行为
|
strong |
内存顺序
定义原子操作的内存顺序语义,控制不同线程间的内存可见性顺序。
| 枚举值 | |
|---|---|
| relaxed | 最宽松的内存顺序,只保证原子性 |
| consume | 数据依赖顺序,用于依赖读取的场景 |
| acquire | 获取操作,确保后续读写不会被重排到前面 |
| release | 释放操作,确保前面的读写不会被重排到后面 |
| acq_rel | 获取-释放组合操作 |
| seq_cst | 顺序一致性,最严格的内存顺序 |
在文件 atomic_base.hpp 第 29 行定义.
|
strong |
内存顺序修饰符枚举
用于扩展memory_order的功能,支持硬件锁消除(HLE)等高级特性。
| 枚举值 | |
|---|---|
| memory_order_mask | 内存顺序掩码 |
| memory_order_modifier_mask | 修饰符掩码 |
| memory_order_hle_acquire | HLE获取修饰符 |
| memory_order_hle_release | HLE释放修饰符 |
在文件 atomic_base.hpp 第 58 行定义.
|
noexcept |
信号内存屏障
| mo | 内存顺序 |
在同一线程内的信号处理程序和普通代码间插入内存屏障。
在文件 atomic_base.hpp 第 162 行定义.
引用了 memory_order_relaxed.
|
noexcept |
线程内存屏障
| mo | 内存顺序 |
在不同线程间插入内存屏障,确保内存操作的顺序性。
在文件 atomic_base.hpp 第 132 行定义.
引用了 memory_order_acquire, memory_order_consume, memory_order_relaxed , 以及 memory_order_seq_cst.
|
constexprnoexcept |
获取原子比较交换操作失败时的内存顺序
对于原子比较交换(compare-exchange)操作,成功和失败的内存顺序可以不同。 此函数根据给定的内存顺序,返回对应的失败内存顺序。
转换规则:
在文件 atomic_base.hpp 第 102 行定义.
引用了 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().
|
constexprnoexcept |
检查比较交换失败内存顺序是否有效
| mo | 待检查的内存顺序 |
在文件 atomic_base.hpp 第 120 行定义.
引用了 memory_order_acq_rel, memory_order_mask , 以及 memory_order_release.
被这些函数引用 atomic_cmpexch_strong(), atomic_cmpexch_strong_any(), atomic_cmpexch_weak(), atomic_cmpexch_weak_any(), atomic< int8_t >::compare_exchange_strong(), atomic< int8_t >::compare_exchange_strong(), atomic_base< T * >::compare_exchange_strong(), atomic< int8_t >::compare_exchange_weak(), atomic< int8_t >::compare_exchange_weak(), atomic_base< T * >::compare_exchange_weak() , 以及 atomic_base< T * >::compare_exchange_weak().
|
constexprnoexcept |
|
constexprnoexcept |