我一直在读这篇关于原子操作的文章,它提到了32位整数赋值在x86上是原子的,只要该变量是自然对齐的.
为什么自然对齐确保原子性?
c c++ concurrency x86 atomic
在这里(以及一些SO问题)我看到C++不支持像无锁的东西,std::atomic<double>并且还不能支持像原子AVX/SSE向量这样的东西,因为它依赖于CPU(虽然现在我知道CPU,ARM, AArch64和x86_64有矢量).
std::atomic<double>
但是double在x86_64中对s或向量的原子操作是否有汇编级支持?如果是这样,支持哪些操作(如加载,存储,添加,减去,可能相乘)?MSVC++ 2017实现哪些操作无锁atomic<double>?
double
atomic<double>
c++ assembly x86-64 vectorization stdatomic
c++ ×2
assembly ×1
atomic ×1
c ×1
concurrency ×1
stdatomic ×1
vectorization ×1
x86 ×1
x86-64 ×1