首页 > Java > java教程 > 每个执行订单是否保证 Happens-Before 的一致性?

每个执行订单是否保证 Happens-Before 的一致性?

Susan Sarandon
发布: 2024-11-01 01:01:28
原创
622 人浏览过

Is Happens-Before Consistency Guaranteed in Every Execution Order?

一致性发生之前:深入理解

问题一:理解定义

给定的happens-before一致性定义表明,对于一组动作A,如果A 中的读操作 r 看到写操作 W(r),则不可能是 hb(r, W(r)) 或 A 中存在写 w 使得 w.v = r.v 且 hb(W( r)、w) 和 hb(w, r)。您认为它等同于“...,事实上既不是...也不是...”是正确的。

问题2:“w.v = r.v”的含义

“w.v = r.v”表示读动作r的值(用r.v表示)等于写动作w的值(用w.v表示)。

问题3:执行顺序中左边数字的含义

执行顺序中左边的数字代表每个线程内动作的顺序。例如,在第一个执行顺序中,“1: B = 1”表示线程 1 中的第一个操作是写入变量 B。

问题 4:非易失性变量的可见性

您对 r2 和 r1 都可以看到初始写入值 0 因为 A 和 B 不是易失性字段的理解是正确的。非易失性变量可以存储在寄存器中,这可能会使它们在较长时间内对其他线程不可见。

问题 5:第二个执行顺序中发生的一致性

第二个执行顺序确实是happens-before一致的。读取 r2 和 r1 分别发生在写入 A 和 B 之后,并且不存在违反发生之前关系的干预操作。

问题 6:具有 Read-After- 的真实情况写入

在实际应用中,先写后读的情况可能会发生在各种场景中。例如,考虑一个多线程应用程序,其中一个线程修改共享对象,而另一个线程在不同步的情况下读取同一对象。如果没有适当的机制,例如易失性变量或同步,读取线程最终可能会看到过时的值。

以上是每个执行订单是否保证 Happens-Before 的一致性?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板