我在我的代码中使用atomic<int>
,但是现在我正在编译的机器有一个不支持C ++ 11的旧版g ++版本。网上是否有可用的等效类,以便我可以在我的代码中使用它,如果没有,我可以找到atomic<int>
的C ++ 11实现,这样我就可以从那里复制它。这可以轻松完成吗?
答案 0 :(得分:5)
拟议的(即非官方的)Boost.Atomic图书馆的目的是做到这一点。我不知道它目前处于什么状态,但是它用于最近(正式)接受的Boost.Lockfree库的实现,所以可能它是可用的。
编辑 - 更新了链接,现在Atomic和Lockfree已经正式进入Boost一段时间了:
Boost.Atomic
Boost.Lockfree
答案 1 :(得分:2)
gcc中的这是一个可以作为一个对象访问的对象的整数类型 原子实体,即使存在异步信号。
为避免中断对变量的访问的不确定性,您可以使用访问始终为原子的特定数据类型:sig_atomic_t。
答案 2 :(得分:2)
Hans Boehm's atomic ops library很好,虽然很难确定各种平台上可用的内容。
如果你对LGPL没问题,Intel TBB也有你想要的东西(加上很多其他东西)。
如果您仅关注GCC,那么您可以通过使用GCC's intrinsics来逃避(我不确定那些出现在哪个版本的GCC,但他们已经存在了一段时间。)