您当前的位置: 首页 >  ar
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

软件工程小施同学 发布时间:2021-02-17 22:53:50 ,浏览量:0

一、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

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.1517s