旧的c ++编译器的atomic <int> </int>

时间:2011-09-08 15:51:32

标签: c++ linux g++ c++11

我在我的代码中使用atomic<int>,但是现在我正在编译的机器有一个不支持C ++ 11的旧版g ++版本。网上是否有可用的等效类,以便我可以在我的代码中使用它,如果没有,我可以找到atomic<int>的C ++ 11实现,这样我就可以从那里复制它。这可以轻松完成吗?

3 个答案:

答案 0 :(得分:5)

拟议的(即非官方的)Boost.Atomic图书馆的目的是做到这一点。我不知道它目前处于什么状态,但是它用于最近(正式)接受的Boost.Lockfree库的实现,所以可能它是可用的。


编辑 - 更新了链接,现在Atomic和Lockfree已经正式进入Boost一段时间了:
Boost.Atomic
Boost.Lockfree

答案 1 :(得分:2)

sig_atomic_t

  

这是一个可以作为一个对象访问的对象的整数类型   原子实体,即使存在异步信号。

gcc中的

atomic

  

为避免中断对变量的访问的不确定性,您可以使用访问始终为原子的特定数据类型:sig_atomic_t。

答案 2 :(得分:2)

Hans Boehm's atomic ops library很好,虽然很难确定各种平台上可用的内容。

如果你对LGPL没问题,Intel TBB也有你想要的东西(加上很多其他东西)。

如果您关注GCC,那么您可以通过使用GCC's intrinsics来逃避(我不确定那些出现在哪个版本的GCC,但他们已经存在了一段时间。)