14、一致性的通用性

一致性的通用性

1. 引言

在并发编程的世界里,等待自由(wait - free)实现是一个重要的目标。此前我们考虑过“不存在用 Y 对 X 进行无等待实现”这类声明的证明方法,研究了具有确定性顺序规范的对象类,并得出了一个层次结构,即较低层次的对象无法实现较高层次的对象。每个对象都有一个关联的一致性数字(consensus number),它是该对象能解决一致性问题的最大线程数。在有 n 个或更多并发线程的系统中,不可能用一致性数字低于 n 的对象来实现一致性数字为 n 的对象,这一结果对无锁(lock - free)实现同样适用。

不过,这并不意味着等待自由同步是不可能或不可行的。实际上,存在一些通用的对象类,只要有足够多的这些对象,就可以为任何并发对象构建一个无等待的线性化实现。一个类在有 n 个线程的系统中是通用的,当且仅当它的一致性数字大于或等于 n。例如,提供 compareAndSet() 操作的现代多处理器机器对任意数量的线程都是通用的,它们可以以无等待的方式实现任何并发对象。

下面是不同一致性数字对应的对象类表格:
| 一致性数字 | 对象 |
| — | — |
| 1 | 原子寄存器 |
| 2 | getAndSet() getAndAdd() 、队列、栈 |
| … | … |
| m | (m, m(m + 1)/2) - 寄存器赋值 |
| … | … |
| ∞ | 内存到内存移动、 compareAndSet() Load -

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值