ARM:从int atomic写/读?

Ton*_*ion 12 c arm atomicity

在ARM架构上,遗憾的是我不确切知道它是什么芯片,是32位int读/写原子?

对基本类型的读/写有什么保证吗?

Joh*_*ski 12

它应该是原子的,除非int存储在非对齐的地址上.

  • 实际上,像Cortex-M3这样的ARM处理器支持硬件中的未对齐访问,因此即使未对齐的读/写也是原子的.访问可能跨越多个总线周期到内存,但是没有机会让另一个指令在中间跳转,因此它对程序员来说是原子的. (3认同)
  • 检查它的地址mod 4是否为0.虽然如果你没有做任何奇怪的事情(类型惩罚等),那么编译器会使它对齐. (2认同)
  • 最后我检查了ARM不支持未对齐访问.在任何情况下,这个问题都标记为C,未对齐访问是非法的C(未定义的行为). (2认同)
  • @TJD,您将忽略处理器/内核之间的共享内存。当前处理器连接零件时,另一个处理器可能会更改数据。 (2认同)