#define mb() dsb(sy)
#define rmb() dsb(ld)
#define wmb() dsb(st)
指令dsb是数据同步屏障 Data synchronization Barrier
dsb 后面跟一个参数,参数表示作用域
Ld要求再内存屏障之前所有的loads指令完成,不要求strores指令完成。再内存屏障之后的loads和stores指令必须等待内存屏障完成。
仅仅影响存储stores指令,loads再内存屏障指令重新排序
在内存屏障指令之前的所有loads和stores指令完成。再内存屏障指令之后的所有loads和stores指令必须等待内存屏障完成。