程序顺序的例子,它是静止一致但顺序不一致的?

时间:2018-02-22 18:59:20

标签: concurrency consistency

作者在Maurice Herlihy和Nir Shavit(第3章)的“多处理器编程艺术”一书中提到顺序一致性和静态一致性是无关的,并且有一些程序顺序是一个但不是另一个的例子。是否存在一个静态一致但顺序不一致的程序顺序的例子?

1 个答案:

答案 0 :(得分:1)

我也在阅读本书,我将尝试解释我对这个问题的理解。我仍然不了解整个图片,所以有可能我出错了:)

无论如何,请看本书中的图3.8。该示例显示组成顺序不一致。如果您理解该示例,则顺序执行前后不一致。

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

现在,相同的论点有效:此系统顺序不一致。但是,系统是静态一致的,因为所有内容都重叠,因此对事件的顺序没有任何限制。

因此,我们发现一个执行是静态一致的,但不是顺序执行的。