Concurrency 静态一致但顺序不一致的程序顺序示例?

Concurrency 静态一致但顺序不一致的程序顺序示例?,concurrency,consistency,Concurrency,Consistency,作者在Maurice Herlihy和Nir Shavit的《多处理机编程的艺术》(第3章)一书中提到,顺序一致性和静态一致性是不相关的,并且有一些程序顺序是一个而不是另一个的例子。有没有一个程序顺序静态一致但顺序不一致的例子?我也在读这本书,我将试图解释我对这个问题的理解。我脑子里仍然没有整个画面,所以有可能我搞错了:) 无论如何,看看书中的图3.8。该示例表明,组合不是顺序一致的。如果您理解这个示例,那么您的执行顺序不一致 这个例子并不完全一致。让我们尝试更改它,使其保持静态一致,但仍保持顺

作者在Maurice Herlihy和Nir Shavit的《多处理机编程的艺术》(第3章)一书中提到,顺序一致性和静态一致性是不相关的,并且有一些程序顺序是一个而不是另一个的例子。有没有一个程序顺序静态一致但顺序不一致的例子?

我也在读这本书,我将试图解释我对这个问题的理解。我脑子里仍然没有整个画面,所以有可能我搞错了:)

无论如何,看看书中的图3.8。该示例表明,组合不是顺序一致的。如果您理解这个示例,那么您的执行顺序不一致

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

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

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