Synchronization 严格一致性与顺序一致性

Synchronization 严格一致性与顺序一致性,synchronization,sequential,consistency,eventual-consistency,Synchronization,Sequential,Consistency,Eventual Consistency,我不明白这些。假设我在内存地址x处有一个值10 如果我们有 thread1: Read(x) x+=5 Write(x) 然后: thread2: Read(x) x+=2 Write(x) 我不知道什么是有效的顺序一致性或严格一致性 比如,这里,这是一个有效的严格一致的运算结果吗 T1: R(x), found 10 W(x), x is now 15 T2 R(x),found 10 W

我不明白这些。假设我在内存地址x处有一个值10

如果我们有

thread1:
Read(x)
x+=5
Write(x)
然后:

thread2:
Read(x)
x+=2
Write(x)
我不知道什么是有效的顺序一致性或严格一致性

比如,这里,这是一个有效的严格一致的运算结果吗

T1: R(x), found 10                W(x), x is now 15
T2                 R(x),found 10                     W(x), x is now 12
那看起来太没用了。x的值错误。。。它不是添加剂。也就是说,每个处理器执行的访问都是有序的,每个人都可以看到相同的顺序。这是严格一致性的标准,对吗?结果被粉碎并不重要


为了顺序一致性。。。我不明白它和严格之间的区别。

部分回答了您的问题:

顺序一致性,只要求内存位置按照操作发出的顺序查看操作。从主线程(时钟)的角度来看,发出这些操作的方式可能并不可取

但是,它们仍然是顺序一致的。我自己的解释是,在发出操作后,对内存位置上的操作重新排序将违反一致性要求。这就好像在发出时已经获得了一个全局票证,并且执行引擎执行票证的订购

如果我们可以这样说的话,“问题”在于指令本身——T1和T2可以任意顺序发出指令。如果应用程序对该一致性级别感到满意,那么它应该乐于使用它

假设情况:让我们希望一些内存位置由多个线程更新,并且在所有线程完成后,读卡器必须读取最后一个写入的值-您只需要最后一个值就可以按照发出的顺序获胜。当然,这是一种狭隘的情况,但在某些情况下,这是一种可取的情况