Software Transactional Memory - Mannarswamy, Sandya (Programming multi‐core and many‐core computing systems, 2017)
Software transactional memory (STM) has been proposed as a promising programming paradigm for shared‐memory multithreaded programs as an alternative to conventional lock‐based synchronization primitives. STM is intended to facilitate the development of complex concurrent software by reducing the burden of programming complexity involved in writing concurrent code. This chapter provides a background on STM and examines STM from a programmer's perspective. It discusses the different semantic models associated with some of the current STM proposals. It also provides a quick overview of the various STM design dimensions, the evolution of STM over the years, and a short overview of STM performance. A wide variety of STM techniques, inspired by database algorithms, have been explored in order to determine the right combination of strategies that suit the requirements of concurrent applications. Transactional memory semantics describe the expected or allowed outcomes of various memory operations on shared data accessed by concurrent threads of a transactional memory application.