gpt4 book ai didi

java - Java 中有多少种内存屏障?

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:24 24 4
gpt4 key购买 nike

例如,在标准 C11 C++11 ,具有6种内存屏障:http://en.cppreference.com/w/cpp/atomic/memory_order

  • memory_order_relaxed
  • 内存顺序消耗
  • 内存顺序获取
  • 内存顺序_释放
  • memory_order_acq_rel
  • memory_order_seq_cst

哪些决定了编译器可以对指令重新排序的方向,以及需要插入哪些处理器指令以限制处理器流水线中的重新排序。例如,前五个障碍仅影响编译器,但不会生成任何 CPU 指令(无 S/L/MFENCE),因为在 x86 中 - acquire-release-semantics 是自动提供的。

Java 中有多少种内存屏障?还是只有两种类型?

  • 允许重新排序
  • 禁止重新排序

最佳答案

在 Java 语言或其标准库的规范中没有明确指定的“内存障碍”。有一个基于“先于发生”关系的 Java 内存模型 (JMM)。当然,JVM 的实现使用一些内存屏障来实现 JMM,但它们是特定于实现/硬件的。参见例如: http://gee.cs.oswego.edu/dl/jmm/cookbook.html那篇文章定义了 LoadLoad、LoadStore、StoreLoad、StoreStore 抽象内存屏障(实际上是非标准的,但广泛使用的术语)并描述了如何在特定硬件上实现它们。

关于java - Java 中有多少种内存屏障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22070894/

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