对原子操作的最低要求

The least requirement for the atomic operation

本文关键字:原子操作      更新时间:2023-10-16

我只是想收集一些关于原子操作要求的循证信息。

例如(也许不对,只是一些例子)

  1. 在x86_64,当您在条目大小上书写或阅读长并按长对齐时,操作是AOTMIC,因为巴拉巴拉巴拉...

  2. 在x86_64,当您使用 GCC 原子基元写入或读取字节时,您对这些字节的操作将保持原子。

希望收到和帮助:)

引用专业C++:

对简单标量变量的简单赋值通常不需要 同步。例如,在 x86 上,32 位对齐的值为 在硬件级别和单个事务中以原子方式处理 不需要显式同步。例如,设置布尔值 值为 false 以停止线程不需要同步,但 对于任何给定的 op,像 ++、-- 或 op= 这样的操作都需要 同步。

这并不能回答您的所有问题,但这是您正在寻找的一部分吗?

如果您正在寻找芯片级保证,则需要查阅这些芯片的技术手册。在英特尔上,请查看软件开发人员手册,其中包含有关内存订购的完整信息。在这种情况下,原子的定义包括内存排序保证。基本保证列在"第 3 卷:8.2 内存排序"中,其中还标明了一些功能以"原子"方式运行。

请注意,完整的细节很复杂,需要详细了解芯片。这就是为什么 C 和 C++ 现在将它们包装在更高级别的保证中。您当然可以查阅这些各自的标准以查看其保证。