gcc是否保证对volatile整数的对齐访问是原子访问
Does gcc guarantee an aligned access to volatile integer to be atomic?
gcc(针对C和C++)是否保证对volatile对象的对齐访问是原子的?
*((volatile unsigned int*)ADDRESS_DIVISIBLE_BY_4) = SOME_CONSTANT;
如果unsigned int size为4,是否保证上面一行后面的存储机器指令不会被撕裂?
注意:这个问题只涉及原子性,不涉及排序它与并发无关,而是与内存映射寄存器有关,这些寄存器可能需要一步存储指令。
任何volatile都不能被认为是原子的。从并发性的角度来看,它几乎是无用的。
相关文章:
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- C++中未对齐访问的正确性
- 对齐指针的未对准访问
- 英特尔处理器上的未对齐访问商店
- 64位Windows API结构对齐导致命名管道上出现“拒绝访问”错误
- gcc是否保证对volatile整数的对齐访问是原子访问
- 如何使用指针合法地访问对齐错误的对象
- MOVAPS 访问未对齐的地址
- 对齐对数组元素的访问
- 无法访问 std::vector 的 16 位对齐成员
- 未对齐的访问导致ARM Cortex-M4出现错误
- 从字符[]访问对齐的T和的最有效方法是什么?
- 通过reinterpret_cast进行未对齐的访问
- 未对齐内存访问:它是定义的行为或不
- 在c++中声明、操作和访问未对齐内存
- 矢量化/优化循环,用于宽寄存器(特别是Xeon Phi)的未对齐数据访问
- 统一缓冲区对象未对齐.GLSL访问中断
- 为什么即使是 16 字节对齐的地址也会导致_mm_load_si128导致访问冲突