Skip to content

Latest commit

 

History

History
26 lines (17 loc) · 2.09 KB

SequentialConsistencyModel.md

File metadata and controls

26 lines (17 loc) · 2.09 KB

顺序一致性模型

一、竞态条件(Race Condition)

计算的正确性取决于 多个线程 执行的 时序 时,就会发生 竞态条件

二、顺序一致性模型

对内存可见性的保证 对多线程并发时的串行化保证

顺序一致性模型的两大特征:
  • 一个线程中的所有操作必须按照程序的顺序来执行。
  • (不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序。在顺序一致性内存模型中,每个操作都必须原子执行且立刻对所有线程可见。

顺序一致性模型

在概念上,顺序一致性模型有一个单一的全局内存,这个内存通过一个左右摆动的开关可以连接到任意一个线程。同时,每一个线程必须按程序的顺序来执行内存读/写操作。从上图我们可以看出,在任意时间点最多只能有一个线程可以连接到内存。当多个线程并发执行时,图中的开关装置能把所有线程的所有内存读/写操作串行化

  • 为了更好的理解,下面我们通过两个示意图来对顺序一致性模型的特性做进一步的说明:

假设有两个线程A和B并发执行。其中A线程有三个操作,它们在程序中的顺序是:A1->A2->A3。B线程也有三个操作,它们在程序中的顺序是:B1->B2->B3。 假设这两个线程使用监视器来正确同步:A线程的三个操作执行后释放监视器,随后B线程获取同一个监视器。那么程序在顺序一致性模型中的执行效果将如下图所示: 多线程并发执行多操作的模型

参考资料: JVM(十二)Java顺序一致性模型