内存屏障

硬件指令

  • sfense: store fense
    在sfence指令前的写操作当必须在sfence指令后的写操作前完成。
  • lfense: load fense
    在lfence指令前的读操作当必须在lfence指令后的读操作前完成。
  • mfence: memory fence
    在mfence指令前的读写操作当必须在mfence指令后的读写操作前完成。

linux内核中把它们封装成了一些函数。

/linux/arch/x86/um/asm/barrier.h

#define mb()	asm volatile("mfence" : : : "memory")
#define rmb()	asm volatile("lfence" : : : "memory")
#define wmb()	asm volatile("sfence" : : : "memory")

参考:https://blog.csdn.net/maotianwang/article/details/9154159

C++ memory order

{% post_link "C++/cpp-memory-order" %}

posted @ 2024-09-28 13:44  寻找繁星  阅读(1)  评论(0编辑  收藏  举报