【问题标题】:example of a program order which is quiescently consistent but sequentially inconsistent?静态一致但顺序不一致的程序顺序示例?
【发布时间】:2018-02-22 18:59:19
【问题描述】:

作者在 Maurice Herlihy 和 Nir ​​Shavit 所著的 The art of multiprocessor programming(第 3 章)一书中提到,顺序一致性和静态一致性是不相关的,并且有一些程序顺序的例子是一个而不是另一个。有没有静态一致但顺序不一致的程序顺序示例?

【问题讨论】:

    标签: concurrency consistency


    【解决方案1】:

    我也在读这本书,我会尝试解释我对这个问题的理解。我的脑海中仍然没有全貌,所以我有可能出错了:)

    不管怎样,看看书中的图 3.8。该示例表明组合不是顺序一致的。如果您理解该示例,则执行顺序不一致。

    这个例子并不是完全一致的。让我们尝试更改它,使其保持静态一致,但仍然顺序不一致。我们需要做的就是延长线程B的方法调用与线程A的调用重叠。例如线程B中的q.enq(y)应该与p.enq(x)q.enq(x)重叠,线程B中的p.enq(y)应该重叠线程 B 中的 q.enq(x)p.deq(y)q.deq(x) 应该与 p.deq(y) 重叠。

    现在,同样的论点是有效的:这个系统不是顺序一致的。然而,系统是静态一致的,因为一切都是重叠的,因此对事件的顺序没有限制。

    所以我们找到了一个静态一致但不是顺序的执行。

    【讨论】:

      猜你喜欢
      • 2013-10-13
      • 2011-09-26
      • 1970-01-01
      • 2021-11-02
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      相关资源
      最近更新 更多