根据 Maurice Herlihy 和 Nir Shavit 的《多处理器编程的艺术》(第 3 章),在并发程序的正确性方面,顺序一致性是比静态一致性更强的条件
作者还在 3.4.1 中提到,存在顺序一致的执行,但并非静态一致。我不明白怎么办。有人可以提供线索或提供示例执行吗?
考虑一个队列(先进先出) https://stackoverflow.com/questions/16433397/can-you-explain-me-what-are-enqueue-and-dequeue-please您将元素入队和出队的位置。
From 本论文 http://mspiegel.github.io/publications/michael-spiegel-dissertation.pdf关于并发,我读到了(p.20):
顺序一致性允许的场景示例
模型和静态一致性模型中不允许的情况如图所示
图 2.1。两个进程共享一个并发队列数据结构。这
第一个进程将 x 排队。在某个不重叠的后续间隔,
第二个进程将 y 排入队列。最后第二个进程执行
出队并接收 y。这个例子是顺序一致的,但是
不静态一致,假设入队之间的时间
操作超出了静止间隔。
图2.1:
T1: --- enq(x) ---------------------------
T2: ------------- enq(y) ---- deq():y ----
该历史记录是顺序一致性所允许的,可以是
静态一致性允许或禁止,并且被禁止
可线性化的一致性。
如果您假设在两次入队之间队列处于静止状态,则 T2 应该看到 T1 的更改,并且出队应该返回 x。如果你假设两个队列之间没有静态间隔,那么两个队列可以按照你的意愿重新排序,并且 deq():y 是一致的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)