gpt4 book ai didi

windows - 为什么可以将 MemoryBarrier 实现为对 xchg 的调用?

转载 作者:可可西里 更新时间:2023-11-01 14:45:04 25 4
gpt4 key购买 nike

在 msdn 上 http://msdn.microsoft.com/en-us/library/windows/desktop/ms684208(v=vs.85).aspx , MemoryBarrier 实现为对 xchg 的调用。

// x86

FORCEINLINE
VOID
MemoryBarrier (
VOID
)
{
LONG Barrier;
__asm {
xchg Barrier, eax
}
}

我在“软件开发人员手册”中找不到一些资料。请告诉我原因。

最佳答案

这里发生了两件事:

  1. 编译器被赋予一个不透明 block 以插入到输出指令流中。由于它不知道 block 内访问了哪些数据,因此无法重新排序周围的其他语句。

  2. xchg 指令执行原子读取-修改-写入操作,这需要在内存总线上进行排序,因此 CPU 会强制执行内存屏障。

关于windows - 为什么可以将 MemoryBarrier 实现为对 xchg 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19652824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com