多平台原子增量

时间:2011-11-03 10:04:50

标签: c++ boost synchronization atomic multiplatform

std::atomic可用之前,什么是多平台(windows& linux)以原子方式递增变量的方式?

我目前正在使用boost::detail::atomic_count,但它位于boost::detail命名空间中,我不知道它是否可以安全使用。

1 个答案:

答案 0 :(得分:2)

多平台,但编译器特定的方式是使用GCC的__sync_fetch_and_add

或者通过一些条件编译自己定义这样的函数:

#ifdef __GNUC__
#define atomic_inc(ptr) __sync_fetch_and_add ((ptr), 1)
#elif defined (_WIN32)
#define atomic_inc(ptr) InterlockedIncrement ((ptr))
#else
#error "Need some more porting work here"
#endif