一个是模板类std::atomic
的成员函数,一个是模板函数,似乎它们做同样的事情。由于std
是一个类库,为什么它同时提供class和none-class版本,我认为同样的操作?
它们之间是否存在真正的差异?
答案 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
可以专门用于您的类型。