C ++ 11:atomic <t> :: store和atomic_store <t>之间的区别是什么

时间:2017-07-26 18:02:44

标签: c++ function class c++11 atomic

一个是模板类std::atomic的成员函数,一个是模板函数,似乎它们做同样的事情。由于std是一个类库,为什么它同时提供class和none-class版本,我认为同样的操作?

它们之间是否存在真正的差异?

2 个答案:

答案 0 :(得分:7)

语义没有区别。自由函数试图实现与C11的源兼容性:

#ifdef __cplusplus
#include <atomic>
#define _Atomic(X) std::atomic<X>
#else
#include <stdatomic.h>
#endif

_Atomic(int) c;

int get_c(void) { 
    return atomic_load(&c); 
}

答案 1 :(得分:1)

就像你说的那样 - 一个是一个类,另一个是函数。类具有接口 - atomic<T>将提供存储,加载,适当的构造函数等。

另一方面,atomic_store可以专门用于您的类型。