gcc是否保证对volatile整数的对齐访问是原子访问

Does gcc guarantee an aligned access to volatile integer to be atomic?

本文关键字:访问 对齐 整数 是否 volatile gcc      更新时间:2023-10-16

gcc(针对C和C++)是否保证对volatile对象的对齐访问是原子的?

*((volatile unsigned int*)ADDRESS_DIVISIBLE_BY_4) = SOME_CONSTANT;

如果unsigned int size为4,是否保证上面一行后面的存储机器指令不会被撕裂?

注意:这个问题只涉及原子性,不涉及排序它与并发无关,而是与内存映射寄存器有关,这些寄存器可能需要一步存储指令。

任何volatile都不能被认为是原子的。从并发性的角度来看,它几乎是无用的。