【发布时间】:2020-07-01 05:57:06
【问题描述】:
在 C++20 中我们可以这样写:
double x;
double x_value = std::atomic_ref(x).load();
有没有相同效果的功能?
我尝试过std::atomic_load,但似乎没有非原子对象的重载。
【问题讨论】:
-
当然是不可移植的,有 GNU C
__atomic_load_n(&x, __ATOMIC_SEQ_CST)。 gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html。您是否正在寻找采用double*的函数?我怀疑你会在 ISO C++20 中找到一个,但如果有一个需要std::atomic_ref<double> *或参考的 IDK。 -
@PeterCordes One 接受
double*或double&。 -
@PeterCordes 您的评论实际上回答了我的问题。如果你想让它成为一个答案,我会接受它。