根据英特尔64和IA-32架构软件开发人员手册,LOCK信号前缀"确保处理器在声明信号时独占使用任何共享内存".这可以是总线或缓存锁的形式.
但是 - 这就是我问这个问题的原因 - 我不清楚,如果这个前缀也提供了任何内存屏障.
我正在多处理器环境中使用NASM进行开发,并且需要使用可选的获取和/或发布语义来实现原子操作.
那么,我是否需要使用MFENCE,SFENCE和LFENCE指令或者这是多余的?
x86 assembly locking intel memory-fences
assembly ×1
intel ×1
locking ×1
memory-fences ×1
x86 ×1