gpt4 book ai didi

java - Java内存模型中的重新排序

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

重新阅读JMM ,发现有一句没看懂:

We consider here only variables that are readable and writable as anatomic unit -- that is, no bit fields, unaligned accesses, or accesseslarger than word sizes available on a platform.

任何人都可以解释上面显示的粗体字的情况。

最佳答案

在某些架构上,处理器可以在单个命令中执行多个内存访问:

  • 位字段:设置内存的某些位;这通常使用读取-修改-写入实现,具有单独的读取和写入访问权限。
  • 未对齐访问:在某些 CPU 架构上,处理器对访问多字节值时可以使用的地址施加限制,尤其是在跨字边界时。大多数现代处理器都没有这个问题,因为它们可以执行多次读取以覆盖所需的地址范围;如果您从 0x01 读取到 0x05,它会分成 0x01-0x04 和 0x05 读取。如果您需要在那里写东西,情况就复杂了;相同的区域将首先读取,然后写入,与对齐的地址(地址是 4 的倍数)相比,需要进行 3 倍的内存操作。 (请记住,在现代 CPU 上,问题更加复杂,因为您有非常深的内存层次结构,每层对齐约束不同)。

在这些情况下,一个操作将需要跨越多个内存访问,因此可能会出现竞争条件,因此无法保证原子性。

关于java - Java内存模型中的重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337046/

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