C++11:atomic<T>::store 和 atomic_store<T> 有什么区别
C++11: what's the difference between atomic<T>::store and atomic_store<T>
一个是template的成员函数class std::atomic
,一个是template function,好像是做同样的事情。由于 std
是一个 class 库,为什么它同时提供 class 和 none-class 版本,我认为是相同的操作?
它们之间有什么真正的区别吗?
正如您所说 - 一个是 class,另一个是函数。 Class 具有接口 - atomic<T>
将提供存储、加载、适当的构造函数等。
另一方面,atomic_store
可以专门针对您的类型。
语义上没有区别。免费功能是为了实现与 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);
}
一个是template的成员函数class std::atomic
,一个是template function,好像是做同样的事情。由于 std
是一个 class 库,为什么它同时提供 class 和 none-class 版本,我认为是相同的操作?
它们之间有什么真正的区别吗?
正如您所说 - 一个是 class,另一个是函数。 Class 具有接口 - atomic<T>
将提供存储、加载、适当的构造函数等。
另一方面,atomic_store
可以专门针对您的类型。
语义上没有区别。免费功能是为了实现与 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);
}