加载中...

内存屏障(Memory Barrier,也称内存栅栏Fence)是一类特殊指令或编译器指示,用于限制其前后内存访问操作被重排序,确保多处理器环境下内存操作按预期顺序对其他核心可见。
为提升性能,编译器会调整指令顺序,CPU也会乱序执行并通过写缓冲、无序互连等机制延迟或重排访存的全局可见顺序。单线程程序感知不到这些重排,但多线程共享数据时,缺少约束会导致"先写数据、再置标志"这类协议被打乱。不同架构的内存模型强弱不同:x86较强(TSO),Arm和RISC-V较弱,后者更依赖显式屏障。
常见类型包括读屏障、写屏障和全屏障;Arm提供DMB/DSB/ISB指令,x86提供MFENCE等。高级语言通常不直接写屏障,而是使用原子类型与内存序(如C++的memory_order_acquire/release),由编译器生成合适的屏障。
内存屏障是无锁编程和同步原语实现的基石,锁与原子库的正确性都建立在恰当的屏障之上。

登录 后参与讨论
暂无讨论,来发表第一条评论吧