内存屏障(或栅栏)是非顺序一致性的硬件提供的一种显式指令,用于控制排序提供更强的内存排序,修复同步算法。

添加内存屏障,确保每个线程在开始读取之前都会刷新其先前对内存的写入:

// Thread 1           // Thread 2
x = 1                 y = 1
barrier               barrier
r1 = y                r2 = x

x86 总存储有序(x86-TSO) 加上内存屏障之后 r1=0, r2=0 就会变得不可能。