Java 内存模型 - 令人惊讶的行为

2024-04-24

I am reading about Java Memory Model in JSR-133 and I cannot understand how this type of behavior is acceptable:
enter image description here

有人可以解释一下吗?


CPU 必须确保的唯一一件事是,线程内对 X 的写入不会影响对其关联的 RX 内存位置的后续分配。它没有说明从哪里获取要写入的值。

所以, 在线程 1 中,CPU 说
“哦,我需要读取 X”,因此开始读取操作。
然后它说
“我需要写信给 X”,那么QUEUES写入队列中的值

线程 2 做同样的事情。
“哦,我需要读 X”并开始阅读。
“我需要写入 X”,并对写入进行排队。

现在我们有两个等待读取和两个排队写入。

如果 CPU 架构规定一个内核上的读取可能会询问另一个内核的写入队列,那么两个内核都可以互相读取对方对 X 的未完成写入。因此,您会得到跨内核拉取的两个值,最终被分配给 RX 内存位置那个线程。

当您在指令流中放置内存屏障时,它可以防止这种类型的过度排队写入读取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 内存模型 - 令人惊讶的行为 的相关文章

随机推荐

  • 西格网络速度

    这个库对于获取 cpu ram 和其他人员来说非常棒 但是 我不知道如何获得网络速度 这意味着 在一段时间内发送和接收了多少数据 有办法给我这些数据吗 这可能是我正在寻找的东西吗 Tcp stat sigar getTcp stat get
  • Windows 和 OS X 之间 build.gradle 中的相对路径不同

    我的项目有一个包含密钥库文件 file keystore 的文件夹 这是结构 gradle 2 2 taskArtifacts idea copyright libraries app build generated libs src an
  • 如何使视频资源兼容视网膜显示?

    我有一个应用程序 可以在播放 2 秒的电影时加载 目前 该应用程序已在商店上架 并且除此视频外 所有静态内容均符合视网膜显示标准 我有一个用于视网膜显示屏的 960x640 mp4 h 264 编码视频 它在 iPhone 是的 高分辨率
  • 深层链接不起作用 - 离子

    我正在使用 Deeplinks 和 ionic 3 但我创建的 url 不起作用 这是网址 https lucky com prd rm74fEgBB2frzhagYcov https lucky com prd rm74fEgBB2frz
  • 为什么函数(Python)的 __code__ 是可变的

    在昨天的上一个问题中 在评论中 我开始知道在 python 中 code 函数的属性是可变的 因此我可以编写如下代码 def foo print Hello def foo2 print Hello 2 foo foo code foo2
  • JSF“错误 Mac 未验证!” [复制]

    这个问题在这里已经有答案了 我一直在尝试使用 jsf 中的 primefaces 实现一些基本的推送功能 我用过那里的反例http www primefaces org showcase labs push counter jsf http
  • Unity HTML5 错误:找不到编码 1252 数据

    我使用的是 Mac 在 Google Chrome 中执行我的小应用程序时 出现 不支持代码页 1252 的 pb 我正在使用Unity 2017 年 6 月测试版为了整合几何健身房IFClib 的编码为 NET 4 6 现在在最后一个 U
  • 基本里德-所罗门纠错问题

    在存在丢失字节 或多个丢失字节 的情况下 里德 所罗门纠错是否有效 例如 假设它是 12 8 Reed Solomon 码 那么理论上它应该能够纠正 2 个错误 如果位置已知 则可以纠正 4 个擦除 但是 如果仅接收到 11 或 10 个字
  • JavaFX:无法设置绑定值异常

    在我的 javafx 应用程序中 我创建了一个表视图 其中有一些项目 如果项目存在于表视图中 则应启用删除按钮 否则应禁用删除按钮 现在的问题是 当我选择项目并单击删除按钮时 它会引发以下异常 我该如何解决这个问题 这是我的表格视图代码 t
  • 错误代码:1290。MySQL 服务器正在使用 --secure-file-priv 选项运行,因此无法执行此语句

    我遇到了这样的问题 错误代码 1290 MySQL 服务器正在使用 secure file priv 选项运行 因此无法执行此语句当我尝试执行 MySQL 语句 Windows 时 SELECT FROM xxxx WHERE XXX IN
  • 锁问题 - “U”锁与“X”锁

    我有几个关于更新 U 锁和独占 X 锁的问题 1 当资源即将更新时 对资源施加 X 锁 我是否正确 2 我对U锁有点模糊 当读取资源并且 SQL Server 认为稍后可能需要更新资源时应用 U 锁 我是否正确 如果这是正确的 那么只有在事
  • 在单元测试 CI 期间模拟单击 PyQt5 QMessageBox 小部件中的按钮

    如果我们运行下面的最小示例 而不是长篇大论 python3 Python 3 7 6 default Jan 30 2020 09 44 41 GCC 9 2 1 20190827 Red Hat 9 2 1 1 on linux Type
  • 使用 Crypto++ 库以 CBC 模式实现 AES128

    在输入文件中我有 第一行是一个以十六进制编码的密钥 长度为 16 个字节 在第二行加密消息 CBC 模式下的 AES128 在加密消息前面添加随机 iv 这就是我尝试解密的方法 include
  • 自定义圆形视图。放置视图

    昨天我尝试创建一个自定义视图 其中所有元素 像按钮 图像按钮 被放置在一个圆圈周围 间距相等 我的目标是得到这个 我尝试了这段代码 public class CircleView extends RelativeLayout private
  • 如何使用 Alamofire 5.0.0-beta.3 (Swift 5) 上传图像(分段)

    我正在研究使用多部分上传图像 这段代码工作正常swift 4 and 阿拉莫菲尔 4 请为此提供任何解决方案 public class func callsendImageAPI param String Any arrImage UIIm
  • 套接字编程中的选择函数

    谁能告诉我它的用途和应用selectc 中套接字编程的函数 The select 当您必须处理多个事件源时 函数允许您实现事件驱动的设计模式 假设您想编写一个程序来响应来自多个事件源的事件 例如网络 通过套接字 用户输入 通过标准输入 其他
  • 轨道:fields_for选择

    在我的视图中 我使用 fields for 来显示关系表的表单数据 然而 此表格的一部分将有可供选择的选择列表 我看到 form for 和 fields for 帮助程序有 label text field text area 帮助程序
  • 在 WebView 中显示数字键盘

    我有一个网络视图 我在登录屏幕上手动显示键盘并专注于输入字段 Field
  • 无法让 grizzly 日志记录工作,没有任何内容写入我的 log4j 日志文件

    我有一个简单的 Java Spring 程序 使用标准 log4j properties 文件来控制日志记录 工作正常 当我们通过以下方式添加 Grizzly 时 GrizzlyHttpServerFactory createHttpSer
  • Java 内存模型 - 令人惊讶的行为

    I am reading about Java Memory Model in JSR 133 and I cannot understand how this type of behavior is acceptable 有人可以解释一下