STM(Software Transactional Memory Systems)是什么 怎么用

一、STM是什么

STM 提供了一个并发控制机制来管理对共享内存的访问,利用了这两个概念:乐观事务,以管理共享并发控制。

乐观

乐观指的是在假定不会发生错误的情况下,我们并行地执行多个原子操作块。

完成这些之后,我们检测这其中是否发生了一些问题。

  • 如果没有找到任何问题,那么我们更新原子操作块中的状态变量。
  • 如果发现了问题,那么我们回滚并且重试操作。

较之其它替代方法来说,乐观并发机制通常提供可伸缩度更高的选择。

 

事务

STM的模型构建与数据库事务处理较为相似。

在利用STM实现的程序中,Java的堆即是支持启动/提交以及回滚的事务型数据集。

在对象掌握内存中的状态的同时,事务机制仅仅实现下面的几个特性:原子性,一致性以及隔离

 

二、实现过程

STM有点像数据库的事务,不过STM是对于程序执行来说的,大概是这样的一个过程:

在程序开始执行"bytecode"时,先开启一个事务,用一个ThreadLocal的东东来记录事务中的log

记录

  • 读取的所有的对象
  • 修改对象

的记录

在上面的过程中“探测”有没有修改,比如检查一个对象的最后修改时间是否和事务开始时一致

如果执行到"bytecode"的最后,

  • 没有发现修改,则把修改的内存"commit",
  • 如果有修改,则"rollback"。

 

三、常用函数

 

 

https://www.oschina.net/translate/software-transactional-memory-stm

https://blog.csdn.net/hengyunabc/article/details/7802855

https://zhuanlan.zhihu.com/p/151425608

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件工程小施同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值