Skip to main content

Software transactional memory


 As we learn from the literature, flexibility in choosing synchronization operations greatly simplifies the task of designing highly concurrent programs. Unfortunately, existing hardware is inflexible and is at best on the level of a LoadLinked/StoreConditional operation on a single word. Building on the hardware based transactional synchronization methodology of Herlihy and Moss, we offer software transactional memory (STM), a novel software method for supporting flexible transactional programming of synchronization operations. STM is non-blocking, and can be implemented on existing machines using only a LoadLinked/StoreConditional operation. We use STM to provide a general highly concurrent method for translating sequential object implementations to non-blocking ones based on implementing a k-word compare&swap STM-transaction. Empirical evidence collected on simulated multiprocessor architectures shows that our method always outperforms the non-blocking translation methods in the style of Barnes, and outperforms Herlihy’s translation method for sufficiently large numbers of processors. The key to the efficiency of our software-transactional approach is that unlike Barnes style methods, it is not based on a costly “recursive helping” policy.

This is a preview of subscription content, access via your institution.

Author information



Additional information

Received: January 1996 / Revised: June 1996 / Accepted: August 1996

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Shavit, N., Touitou, D. Software transactional memory. Distrib Comput 10, 99–116 (1997).

Download citation

  • Key words: Multiprocessor synchronization
  • Lock-free
  • Transactional memory
  • Distributed shared memory