0

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

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

  1. 在 x86_64 上,当你对 long 的 entry sizeof 进行写入或读取并按 long 对齐时,操作是 aotmic,因为 balabalabala ...

  2. 在 x86_64 上,当您使用 gcc atomic primitive写入或读取字节时,您对这些字节的操作将保持原子性。

希望得到帮助和帮助:)

4

2 回答 2

3

来自专业 C++的报价:

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

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

于 2012-04-23T03:03:06.477 回答
2

如果您正在寻找芯片级保证,您需要查阅这些芯片的技术手册。在英特尔上查看软件开发人员手册,其中包含有关内存排序的完整信息。在这种情况下,原子的定义包括内存排序保证。基本保证列在“第 3 卷:8.2 内存排序”中,另外一些函数被标记为以“原子”方式运行。

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

于 2012-04-23T08:54:21.587 回答