java - 什么是 "sequentially consistent executions are free of data races"?

标签 java memory-model

JLS, §17.4.5. Happens-before Order , 它说

A program is correctly synchronized if and only if all sequentially consistent executions are free of data races.

它只给出了“顺序一致”的定义,并没有给出“顺序一致执行”的定义。只有知道什么是“顺序一致的执行”,我们才能进一步讨论这个话题。

那么什么是“顺序一致的执行”,什么是“顺序一致的执行没有数据竞争”?

最佳答案

执行有一个非常简单的正式定义:它只是对正在考虑的所有内存操作集合的总排序。

顺序一致的执行由顺序一致的操作的任何总排序表示。

“无数据竞争”一词也由 JLS 精确定义。

请注意,JLS 不需要顺序一致性。事实上,happens-before 的整个形式主义的存在是为了精确定义顺序不一致的执行可以维持顺序一致性的幻觉的术语。

关于java - 什么是 "sequentially consistent executions are free of data races"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12018369/

相关文章:

java - 用于客户端服务器通信的 Java 网络

java - GPS定位应用首次运行,但再次尝试后,找不到我的经度和纬度

java - 我必须在 Eclipse 中使用 JNI 从我的 C 程序访问 java 程序中声明的变量

c++ - "acquire"和 "consume"内存顺序有何不同, "consume"何时更可取?

C++0x : memory ordering

c - C 中的字符串常量与 char 数组

java - JPQL 语句不适用于引用

Java,构造函数以数组作为参数以及来自驱动程序的用户输入

Java - 监视器解锁的先行关系