在并发程序的正确性的背景下,根据Maurice Herlihy和Nir Shavit的多处理器编程技术,顺序一致性是比静态一致性更强的条件(第3章) 作者还在3.4.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是一致的。