12、原语同步操作的相对能力

原语同步操作的相对能力

在设计新的多处理器时,我们需要考虑应该包含哪些原子指令。文献中提供了众多不同的选择,如内存读写、 getAndDecrement() swap() getAndComplement() compareAndSet() 等等。支持所有这些指令会变得复杂且低效,但如果支持了错误的指令,可能会使解决重要的同步问题变得困难甚至不可能。

我们的目标是找出一组强大到足以解决实际中可能出现的同步问题的原语同步操作。为了实现这一目标,我们需要一种方法来评估各种同步原语的能力,即它们能解决哪些同步问题,以及解决这些问题的效率如何。

1. 基本概念
  • 无等待和无锁实现 :一个并发对象的实现如果每个方法调用都能在有限步骤内完成,那么它就是无等待的;如果能保证无限次地有某个方法调用在有限步骤内完成,那么这个方法就是无锁的。在之前的内容中,我们已经见过无等待(因此根据定义也是无锁)的寄存器实现。评估同步指令能力的一种方法是看它们对共享对象(如队列、栈、树等)实现的支持程度。我们关注的是无等待或无锁的解决方案,即不依赖外部支持就能保证进度的方案。
  • 同步原语的层次结构 :并非所有的同步指令都是等价的。如果将原语同步指令看作对象,其导出方法就是指令本身(在文献中,这些对象常被称为同步原语),可以证明存在一个无限的同步原语层次结构,使得处于某一层级的原语无法用于对更高层级的任何原语进行无等待或无锁实现。这个层次结构中的每个类都有一个相关的共识数,它是
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值