首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我们不能应用JLS中包含的担保?

为什么我们不能应用JLS中包含的担保?
EN

Stack Overflow用户
提问于 2012-08-24 10:24:37
回答 1查看 66关注 0票数 1

我从http://www.cs.umd.edu/%7Epugh/java/memoryModel/收到一封邮件,其中说如果对易失性vars的操作包含数据争用,那么保证(“程序是正确同步的当且仅当所有顺序一致的执行都没有数据竞争”。在http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.4.5中)不能应用。

为了方便起见,我只是把http://www.cs.umd.edu/%7Epugh/java/memoryModel/archive/2477.html的一部分放在这里:

我有一个使用易失性变量的程序,我试图用"A程序是正确同步的当且仅当所有顺序一致的执行都没有数据竞争“来进行推理。保证在JLS3。 JLS3似乎包含了一个故障,使我无法证明我的程序没有数据竞争。具体来说,考虑一个易失性变量V的读R和在R之后以同步顺序出现的写W。JLS3似乎认为R和W是相互冲突的访问方式。此外,在从R到W的边缘之前没有发生这种情况(这是正确的)。因此,JLS3似乎也认为R和W是一个数据竞赛。最后,我似乎不能运用上述的保证。

这就是我的问题:如果对易失性的vars上的操作包含数据竞争,为什么我们不能应用JLS中包含的保证?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-24 10:29:53

顺序一致的执行包含对易失性的写入之前的易失性读取。

=>

该执行包含一个数据竞赛。

=>

程序没有“正确同步”。

=>

JLS不提供适用于正确同步程序的保证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12107582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档