事务内存是一种并行程序设计的方式,其来自于数据库管理系统(DBMS)中的事务(Transaction)概念。事务内存目前有两种实现方式,基于软件的STM(Software Transactional Memory)和基于硬件的HTM(Hardware Transacational Memory)。
虽然事物内存的事务编程概念来自于数据库的事务,但在概念上还是有很大的区别的。
1 数据库的 数据是存储在磁盘上的,而在事物内存技术中数据是存放在内存的。
2 事物内存技术中事务不满足acid 中的d(durable) 性质,因为它只在内存中有效。
3 事物内存技术中事 务相对小的多。
最近,微软发布了.NET 4.0 Beta 1的一个单独的新版本,其中包含了STM.NET,也就是Software Transactional Memory。通常我们使用基于锁的同步机制来控制对共享内存的访问,STM则是锁之外的另一种选择。
微软将STM.NET定义为:Software Transactional Memory(STM.NET)是一种可以高效隔离共享状态的机制。开发人员可以将一段代码标记为“原子”事务,并与其它并行运行的事务代码“隔离”开来。
事务内存(Transactional memory)在学术界被认为是一项有前途的技术,并且在当前利用多核硬件提高程序扩展性的大潮中,也作为一项受欢迎的技术被反复提及,其目的是使应用程 序开发人员可以利用STM的并发功能,将那些由专家开发的组件组合在一起,事务内存使这变得简单而安全。