执行的示例,它是顺序一致但不是静止一致的

时间:2013-10-06 13:17:38

标签: concurrency consistency

在并发程序的正确性的背景下,根据Maurice Herlihy和Nir Shavit的多处理器编程技术,顺序一致性是比静态一致性更强的条件(第3章) 作者还在3.4.1中提到,顺序一致的执行不是静态一致的。我不明白怎么做。有人可以投光还是提供样品执行?

1 个答案:

答案 0 :(得分:8)

考虑将queue (FIFO)排入队列并将其取列。

关于并发的this dissertation,我读了(第20页):

  

顺序一致性中允许的方案示例   模型和禁止在静态一致性模型中显示   图2.1。两个进程共享并发队列数据结构。该   第一个进程排队x。在某些不重叠的后续间隔,   第二个过程排队y。最后,第二个过程执行a   出列并接收y。这个例子是顺序一致但是   假设排队之间的时间不是一成不变的   操作超出了静止间隔。

     

图2.1:

T1:  --- enq(x) ---------------------------
T2:  ------------- enq(y) ---- deq():y ----
     

顺序一致性允许此历史记录,也可以是   静止一致性允许或禁止,并禁止   可线性化的一致性。

如果你假设在两个队列之间队列是静止的,那么T2应该看到T1的变化,并且dequeue应该返回x。如果假设两个队列之间没有静止区间,则可以根据需要重新排序两个队列,并且deq():y是一致的。