gpt4 book ai didi

c++ - 我们是否需要在 Intel x86 上使用 C++ 原子进行内存屏障?

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:01 26 4
gpt4 key购买 nike

我认为在 Intel x86 上只有字符串和(某些)流式指令需要内存屏障?对于所有其他指令,英特尔强大的内存排序模型可确保实现一致性?

假设以上是正确的,当我们的代码仅在 Intel x86 上执行时,为什么我们需要使用 C++ 原子(不包括比较和交换)?

我真的让自己感到困惑,我们在哪里需要使用原子,以及使用原子是否会抑制由于内存障碍导致的乱序执行,然后是整个 MESI 协议(protocol)。

MESI 只是确保缓存在所有处理器上保持一致?

内存屏障在其他架构上很有用,因为它们将 CPU 存储缓冲区刷新到缓存,以允许 MESI 确保一致性?

我们什么时候需要在 Intel X86 CPU 上使用原子?

最佳答案

虽然 X86 是缓存一致的,但这并不意味着它可以为您提供您期望找到的保证。原子保存和常规保存有不同的指令,它们的行为也不同。同样重要的是,原子变量可以防止“破坏性”编译器优化。如果没有这些,编译器将很容易根据单线程执行模型优化您的代码,并且您的程序将运行异常。

关于c++ - 我们是否需要在 Intel x86 上使用 C++ 原子进行内存屏障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104960/

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