我只是想收集一些关于原子操作要求的基于证据的信息。
e.g。 (也许不对,只是一些例子)
在x86_64,当你写入或读取条目sizeof long并对齐long时,操作是aotmic,因为balabalabala ...
- 醇>
在x86_64,当您使用gcc atomic primitive写入或读取字节时,对这些字节的操作将保持原子。
希望得到并帮助:)
答案 0 :(得分:3)
对简单标量变量的简单赋值通常不需要 同步。例如,在x86上,32位对齐值是 在硬件级别和单个事务处理原子处理 不需要显式同步。例如,设置布尔值 将值设置为false以停止线程不需要同步,而是一个 对于任何给定的op要求,像++, - 或op =这样的操作 同步。
这不能解答您的所有问题,但这是您要找的部分吗?
答案 1 :(得分:2)
如果您正在寻找芯片级保证,则需要查阅这些芯片的技术手册。在英特尔上查看S oftware Developer Manuals,其中包含有关内存排序的完整信息。在这种情况下,原子的定义包括内存排序保证。基本保证在“第3卷:8.2内存排序”中列出,其中一些功能被标记为以“原子”方式运行。
请注意,完整的细节很复杂,需要详细了解芯片。这就是为什么C和C ++现在将它们包含在更高级别的保证中。您当然可以查阅相应的标准以了解其保证。