【发布时间】:2013-08-22 18:31:16
【问题描述】:
我在某些时候读过本机类型是原子的,只要它们不比内存总线宽并且对齐。我可能对此非常错误,但是即使对于 32 位 CPU (http://en.wikipedia.org/wiki/Front-side_bus),内存总线通常不是 64 位的吗?在哪种情况下,上面的语句意味着读取或写入或对齐的 64 位本机类型将是原子的,对吗?我查看了英特尔的文档,它说 x86 保证在 32 位及以下是原子的 - 但我想确保我正确理解内存总线宽度部分。
谢谢!
【问题讨论】:
-
我认为你在问自己一个错误的问题。如果对特定整数类型的访问是原子的,您的编译器将知道这一点。现代编译器要么实现新的 C11
_Atomic,要么实现类似的东西作为对先前版本标准的扩展。只要您需要原子操作,就可以使用它们。
标签: c cpu cpu-architecture atomic