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

原始同步操作的相对能力

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

1. 评估同步指令的能力

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

这里涉及到两个重要概念:
- 无等待(wait-free) :并发对象的每个方法调用都能在有限步骤内完成。
- 无锁(lock-free) :保证无限次地有某个方法调用能在有限步骤内完成。

评估同步指令能力的一种方法是看它们对共享对象(如队列、栈、树等)实现的支持程度。我们主要评估无等待或无锁的解决方案,即不依赖外部支持就能保证进度的方案。

同步原语存在一个无限的层次结构,处于某一层的原语无法用于对更高层原语进行无等待或无锁的实现。每个层次的类都有一个关联的共识数,它是该类对象能够解决一个称为共识的基本同步问题的最大线程数。在一个有 n 个或更多并发线程的系统中,不可能用共识数低于 n 的对象来构建一个共识数为 n 的对象的无等待或无锁实现。

2. 共识数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值