首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >严格一致性与顺序一致性

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

Stack Overflow用户
提问于 2014-12-04 23:02:22
回答 1查看 384关注 0票数 1

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

如果我们有

代码语言:javascript
复制
thread1:
Read(x)
x+=5
Write(x)

然后:

代码语言:javascript
复制
thread2:
Read(x)
x+=2
Write(x)

我不明白什么是有效的顺序或严格的一致性。

比如,在这里,这是一个有效的严格一致的操作结果吗?

代码语言:javascript
复制
T1: R(x), found 10                W(x), x is now 15
T2                 R(x),found 10                     W(x), x is now 12

那看起来太没用了。X值不对..。不是添加剂。也就是说,每个处理器执行的访问都是按顺序进行的,每个人都看到了相同的顺序。这是严格一致性的标准,对吧?结果被压坏并不重要。

为了连续的一致性..。我不明白它和严格的区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 23:23:17

部分回答你的问题:

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

但是,它们仍然是顺序一致的。我自己的解释是,重新排序在内存位置上的操作发布后,将违反一致性要求。就好像在发行时已经买到了一张全球票,执行引擎也遵守了订票的要求。

“问题”,如果我们可以这样说的话,就是指令问题本身-- T1和T2可以随意按任何顺序发布它们。如果应用程序对这种一致性很满意,那么它应该很高兴地使用它。

假设情况:让我们希望一些内存位置被多个线程更新,在完成所有线程之后,读取器必须读取最后一个书面值--您只需要最后一个就能按它们发出的顺序获胜。当然,这是一个狭窄的情况,但在某些情况下是可取的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27305830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档