软件事务内存:一种新型并发编程方法

5星 · 超过95%的资源 需积分: 10 13 下载量 195 浏览量 更新于2024-11-14 收藏 892KB PDF 举报
"这篇文档是关于软件事务内存(Software Transactional Memory, STM)的权威介绍,由Nir Shavit和Dan Touitou撰写,来自麻省理工学院和特拉维夫大学的研究成果。STM是一种创新的软件方法,旨在提供灵活的事务性编程,以支持同步操作,弥补现有硬件在并发控制上的不足。它基于Herlihy和Moss提出的基于硬件的事务同步方法,并且可以在仅支持单字Load-Linked/Store-Conditional操作的现有硬件上实现非阻塞的事务处理。STM的主要目标是简化高度并发程序的设计,提高其灵活性。" 在当前的并发编程环境中,传统的锁机制虽然能够保证数据一致性,但往往导致代码复杂、难以理解和调试。文献指出,允许程序员自由选择同步操作可以极大简化设计复杂并发程序的任务。然而,现有的硬件同步原语,如Load-Linked/Store-Conditional,通常只提供对单个数据项的基本事务支持。 STM的出现解决了这一问题,它提供了一种软件级别的事务内存机制,允许程序员以事务的方式执行一系列操作,如果这些操作在执行过程中没有冲突,那么事务就会被提交;如果有冲突,事务会被回滚,整个过程对程序员透明。这种机制使得编写并发代码更为简洁,同时也更容易保证数据一致性。 STM的一个关键应用是将顺序对象的实现转化为无锁(lock-free)实现。通过实现一个基于STM事务的k-word compare&swap操作,可以将串行对象转换为高度并发的版本,从而避免了传统锁可能导致的死锁和竞争条件。这种方法已经在模拟的多处理器系统上进行了实验,收集到的实证证据表明STM能有效提升并发性能。 STM的核心思想是将一组操作视为一个原子事务,这样即使在多线程环境下,事务内部的操作也能保持一致性。这降低了同步开销,提高了并发效率。STM的实现通常包括事务开始、事务提交和事务回滚等步骤,并且会涉及到事务冲突检测和解决策略。 STM是并发编程领域的一个重要突破,它通过软件手段提供了类似数据库事务的特性,使程序员能够以更高级别的抽象来编写并发代码,从而简化了并发编程的复杂性,提高了系统的并行度和可伸缩性。