43、事务内存:软件与硬件实现解析

事务内存:软件与硬件实现解析

1. 无阻塞原子对象(FreeObject 类)

1.1 原理概述

无阻塞原子对象实现中,每个对象有当前事务、旧版本和新版本等信息。通过引入间接层(Locator 对象)来实现多字段的原子更新。当事务读取或写入对象时,会经过一系列步骤确保数据的一致性和事务的序列化。

1.2 代码结构

以下是 FreeObject 类的部分代码:

public class FreeObject<T extends Copyable<T>>
    extends TinyTM.AtomicObject<T> {
    AtomicReference<Locator> start;
    private class Locator {
        Transaction owner;
        T oldVersion;
        T newVersion;
        ...
    }
    ...
}

1.3 openWrite() 方法

该方法用于获取对象版本并进行修改,具体步骤如下:
1. 测试线程自身的事务状态:
- 如果状态为已提交(COMMITTED),则直接更新对象。
- 如果状态为已中止(ABORTED),则抛出 AbortedException 异常。
- 如果状态为活动(ACTIVE),则继续后续操作。
2. 检查是否已为写入打开该对象,如果是则直接返回新版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值