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

同步操作的共识能力分析

原始同步操作的相对能力

在设计新的多处理器时,我们面临着一个关键问题:应该包含哪些类型的原子指令?可供选择的指令众多,如内存读写、 getAndDecrement() swap() getAndComplement() compareAndSet() 等等。支持所有这些指令既复杂又低效,而支持错误的指令可能会使解决重要的同步问题变得困难甚至不可能。

1. 评估同步指令的能力

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

在并发编程中,有两个重要的概念:无等待(wait-free)和无锁(lock-free)。如果每个方法调用都能在有限步骤内完成,则该并发对象的实现是无等待的;如果能保证无限次中有某些方法调用在有限步骤内完成,则该方法是无锁的。评估同步指令能力的一种方法是看它们对共享对象(如队列、栈、树等)实现的支持程度。我们关注的是无等待或无锁的解决方案,即不依赖外部支持就能保证进展的方案。

研究表明,并非所有的同步指令都是等价的。同步原语存在一个无限的层次结构,处于某一层次的原语无法用于对更高层次原语进行无等待或无锁的实现。每个类在这个层次结构中都有一个相关的共识数(consensus number),它表示该类对象能够解决一个称为共识(consensus)的基本同步问题的最大线程数。在一个有 n 个或更多并发线程的系统中,不可能用共识数低于 n 的对象来构造一个共识数为 n 的对象的无等待或无锁实现。 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值