Skip to content

顺序一致性

Sequential consistency

所有操作可排成保持各进程程序顺序的单一顺序历史。

形式陈述

一个并发执行是顺序一致的,若所有进程的内存操作能排成某个单一全序 S,并且:

  1. 对每个进程,S 保持其程序顺序;
  2. 每个操作的结果符合该全序下共享内存的顺序规范。

该定义只约束每进程顺序,不要求 S 保持不同进程操作在真实时间中的先后。

直觉

顺序一致性保证观察结果仿佛所有操作按某种交错逐个执行,而且每个线程自己的指令顺序没有被打乱。不同执行可以选择不同交错。

例子与边界

即使 write(1) 在真实时间上已经返回,另一个进程随后才开始 read(),顺序一致性仍可能把读排在写前并返回旧值,只要各进程内部顺序不被破坏;这违反线性一致性的实时约束。因而对同一顺序对象规范,线性一致性严格强于顺序一致性。

推论与应用

顺序一致性是多处理器内存模型的经典基准,便于以交错语义推理。它不自动包含缓存一致性、进展、公平性或原子对象实现;弱内存模型还会允许不符合任何程序顺序保持全序的行为。

参考资料
  • Leslie Lamport, “How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs,” IEEE Transactions on Computers C-28(9), 1979, pp. 690–691,Full paper。
  • Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Ch. 3。