Memory fence(也叫 memory barrier)是并发编程与计算机体系结构中的术语,指一种机制(通常是CPU指令或编译器屏障),用来约束内存读写的重排序,确保在多线程/多核环境下,某些内存操作在“可见性”和“发生先后顺序”上符合程序员的预期,从而避免数据竞争引发的诡异错误。
/ˈmɛməri fɛns/
A memory fence ensures that writes become visible to other threads in the right order.
内存栅栏确保写入以正确的顺序对其他线程可见。
Without a memory fence (or equivalent atomic ordering), the compiler and CPU may reorder operations, causing the reader to observe stale or inconsistent data.
如果没有内存栅栏(或等价的原子顺序保证),编译器和CPU可能重排序操作,导致读者线程读到过期或不一致的数据。
Memory 来自拉丁语 memoria(记忆),fence 原意是“栅栏/围栏”。在计算机语境中把“栅栏”借喻为一种“屏障”:就像栅栏阻止人随意穿越一样,memory fence 阻止(或限制)内存操作跨越某个边界被重排序,从而建立更可靠的执行顺序与可见性。