有没有办法检查一个值的读/写(加载/存储)是否是原子的?我有专门版本的并发容器,只能使用这些值,我想添加一个静态断言以防止意外误用。
对于 x86_64 上的所有基本类型都是如此,但它可能不适用于所有平台或所有 long 数据类型。此外,小型结构和 union 也有可能被分配原子操作(因为它们只是被编译为使用相同大小的基本复制操作)。
最佳答案
C++0x 草案在
29.4 Lock-free property [atomics.lockfree]
#define ATOMIC_CHAR_LOCK_FREE implementation-defined
#define ATOMIC_CHAR16_T_LOCK_FREE implementation-defined
#define ATOMIC_CHAR32_T_LOCK_FREE implementation-defined
#define ATOMIC_WCHAR_T_LOCK_FREE implementation-defined
#define ATOMIC_SHORT_LOCK_FREE implementation-defined
#define ATOMIC_INT_LOCK_FREE implementation-defined
#define ATOMIC_LONG_LOCK_FREE implementation-defined
#define ATOMIC_LLONG_LOCK_FREE implementation-defined
宏指示可以在没有锁的情况下实现 std::atomic
关于c++ - 原子读/写值的静态断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536895/