【问题标题】:C++ Increase Atomic FloatC++ 增加原子浮点数
【发布时间】:2021-02-17 16:43:05
【问题描述】:

我有一个std::atomic<float>,我想增加一个特定的值。但是,在 atomic<float> 上使用 fetch_add() 不会编译并且似乎是不允许的。无论如何,我可以绕过这个吗?这是我试过的代码sn-p:

std::atomic<float> data(0);
void do_work(){ data.fetch_add(1); }

我得到的错误是fetch_add 不是atomic&lt;float&gt; 的成员

编辑:忘记说明我正在使用 -std=c++2a 编译 g++ 9.3.0 版

【问题讨论】:

  • 是的,我正在编译--std = c ++ 2a。 gcc 版本 9.3.0 顺便说一句。我会在帖子中澄清
  • 似乎与g ++ 10:godbolt.org/z/Th5qeK。它可能简单尚未为G ++ 9实施。 span>
  • 我使用了来自@NateEldredge 的链接,看到它在 g++-10.0 下工作并切换到 9.3 并得到了错误。

标签: c++ multithreading floating-point c++20 stdatomic


【解决方案1】:

浮点原子仅受 g++ 10.1 及更高版本中的 C++ 库支持。查看https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html 并搜索P0020R6

您的代码可以使用 g++ 10.2 正常编译:Try on godbolt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2011-04-08
    • 2014-12-01
    • 2019-04-11
    相关资源
    最近更新 更多