为什么我们需要用相同的实现来定义两种类型的障碍?
For example code from io_uring in linux:
#if defined(__x86_64) || defined(__i386__)
#define read_barrier() __asm__ __volatile__("":::"memory")
#define write_barrier() __asm__ __volatile__("":::"memory")
#else
它们在x86上碰巧是相同的,但是在其他体系结构上它们可能会有所不同。因此,为了使代码具有可移植性,即使x86也需要为其提供单独的宏。