作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
https://en.cppreference.com/w/cpp/atomic/memory_order
从cppreference来看,memory_order_release可以使用到C++20吗?谁能解释一下为什么 C++ 标准会删除这个以及之后我们应该使用哪一个内存顺序。
最佳答案
这只是对 cppreference 格式的误解。并不是“until C++20”这一行,而是整个 block 。
C++20 中未删除memory_order_release
。只是 memory_order
本身被重新指定为弱枚举:
typedef enum memory_order {
memory_order_relaxed,
memory_order_consume,
memory_order_acquire,
memory_order_release,
memory_order_acq_rel,
memory_order_seq_cst
} memory_order;
到枚举类(由于 P0439 ):
enum class memory_order : /*unspecified*/ {
relaxed, consume, acquire, release, acq_rel, seq_cst
};
inline constexpr memory_order memory_order_relaxed = memory_order::relaxed;
inline constexpr memory_order memory_order_consume = memory_order::consume;
inline constexpr memory_order memory_order_acquire = memory_order::acquire;
inline constexpr memory_order memory_order_release = memory_order::release;
inline constexpr memory_order memory_order_acq_rel = memory_order::acq_rel;
inline constexpr memory_order memory_order_seq_cst = memory_order::seq_cst;
所有六个内存操作仍然存在,并且仍然可以使用相同的拼写进行访问(尽管不鼓励使用 consume
)。
关于c++ - 为什么内存_order_release直到C++20才支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61714426/
我是一名优秀的程序员,十分优秀!