8

根据文档,原子支持整数类型、枚举类型或指针类型的 T。英特尔 TBB 是否正式支持浮点数/双精度数?我在这里和 Raf Schietekat在这里看到了一些补丁,它们可能/可能没有被合并到最新的 4.0 版本中。从我读过的补丁中,我注意到的唯一主要区别是将 reinterpret_cast 从整数类型添加到浮点/双精度。如果有人能澄清这一点,我将不胜感激。谢谢!

4

3 回答 3

1

您可以轻松地添加对基于 64 位和 32 位原子整数的浮点数的支持。原子加载/存储/交换可以使用 reinterpret_cast 作为直接包装器来实现,原子算术运算可以使用带有原子比较交换的循环来实现。

于 2012-10-05T12:45:22.183 回答
1

C++11 支持原子浮点数和双精度数。std::atomic_fetch_add但是,仅整数类型支持算术函数。

如果您有 C++11 编译器,我建议您切换到,std::atomic这样您就不必依赖未记录的行为。

于 2012-12-28T17:23:49.617 回答
0

test_atomic.cpp 中对非整数类型的测试是在 2008 年添加的(在与 Raf 讨论之后不久)。因此,甚至早于问题的时间,TBB 就支持浮点和双原子(尽管仅限于 fetch_and_store 和 compare_and_exchange 读取-修改-写入操作)。

于 2014-04-25T14:11:22.987 回答