原子操作的最低要求

时间:2012-04-23 02:36:59

标签: c++ c operating-system

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

e.g。 (也许不对,只是一些例子)

  
      
  1. 在x86_64,当你写入或读取条目sizeof long并对齐long时,操作是aotmic,因为balabalabala ...

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

  4.   

希望得到并帮助:)

2 个答案:

答案 0 :(得分:3)

引自Professional C++

  

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

这不能解答您的所有问题,但这是您要找的部分吗?

答案 1 :(得分:2)

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

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