7、并发对象一致性:从顺序一致性到线性一致性

并发对象一致性:从顺序一致性到线性一致性

1. 并发对象一致性基础概念

在并发编程中,一致性是一个关键概念,它确保并发操作的结果符合预期。首先,我们来了解一些基础概念。

1.1 静止一致性(Quiescent Consistency)

静止一致性的一个典型应用是索引分配机制。一个处于静止一致状态的计数器,其待处理的方法调用必须返回一个索引,使得所有索引共同满足顺序计数器的规范,即没有重复或遗漏的数字。它就像程序中的“循环计数器”,在不关心索引发布顺序的程序中非常有用。

静止一致性对并发的限制极小。在任何并发执行中,对于任何待处理的全方法(total method)调用,都存在一个静止一致的响应。全方法是指在对象的每个状态下都有定义的方法,而部分方法(partial method)则只在对象的某些状态下有定义。例如,在无界顺序先进先出(FIFO)队列中,入队操作 enq() 是全方法,因为它在队列的任何状态下都有定义;而出队操作 deq() 是部分方法,因为它只在队列非空时才有定义。

静止一致性是一种非阻塞的正确性条件,并且具有组合性。这意味着可以将多个独立实现的静止一致对象组合成一个更复杂的静止一致系统。

1.2 顺序一致性(Sequential Consistency)

顺序一致性要求方法调用看起来像是按照程序顺序依次执行的。单个线程发出方法调用的顺序称为其程序顺序,不同线程的方法调用之间不存在程序顺序关系。

例如,在图 3.5 中,一个线程先向共享寄存器 r 写入 7,再写入 -3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值