原始同步操作的相对能力
在并发编程领域,同步操作是确保多线程或多进程程序正确执行的关键。不同的同步操作具有不同的计算能力,而共识数(consensus number)是衡量这种能力的一个重要指标。本文将深入探讨多种同步操作的共识数,包括多赋值对象、读 - 修改 - 写操作等,并分析它们在解决共识问题上的能力。
多赋值对象
多赋值对象(Multiple Assignment Objects)在并发编程中有着独特的应用场景。在 (m, n - 赋值) 问题中,给定一个具有 n 个字段的对象(有时是一个 n 元素数组)。 assign() 方法接受 m 个值和 m 个索引值作为参数,原子地将值赋给数组元素; read() 方法接受一个索引参数并返回该数组元素的值。
例如,图 5.10 展示了一个基于锁的 (2, 3) - 赋值对象的实现:
public class Assign23 {
int[] r = new int[3];
public Assign23(int init) {
for (int i = 0; i < r.length; i++)
r[i] = init;
}
public synchronized void assign(T v0, T v1, int i0, int i1) {
r[i0] = v0;
r[i1] = v1;
}
public synchronized int read(int i)
超级会员免费看
订阅专栏 解锁全文
8万+

被折叠的 条评论
为什么被折叠?



