尽管 C 的 std::atomic
原子双操作x86_64
x86_64 上的 SSE/AVX 向量操作
虽然 C 目前缺乏对原子 AVX/SSE 向量操作的支持,但没有办法保证 128b 或 256b 缓存行在整个缓存中的原子传输系统。
但是,在对齐双精度的共享数组上使用矢量加载/存储时,可以采取某些预防措施来最大程度地降低撕裂风险。
原子 16B 加载
原子 16B 存储和 RMW
原子操作具有 8B 半部的 16B 对象
编译器和原子操作
编译器可能并不总是生成最优的原子操作的汇编代码。例如,他们可能会避免在 XMM 和双寄存器之间直接进行 movsd 加载/存储,而是选择迂回方法。
以上是尽管存在 C 限制,如何在 x86_64 上实现双精度和向量的原子操作?的详细内容。更多信息请关注PHP中文网其他相关文章!