The advent of multicore processors has renewed interest in the idea of incorporating transactions
into the programming model used to write parallel programs.This approach, known as transactional
memory, offers an alternative, and hopefully better, way to coordinate concurrent threads. The ACI
(atomicity, consistency, isolation) properties of transactions provide a foundation to ensure that con-
current reads and writes of shared data do not produce inconsistent or incorrect results. At a higher
level, a computation wrapped in a transaction executes atomically - either it completes successfully
and commits its result in its entirety or it aborts. In addition, isolation ensures the transaction pro-
duces the same result as if no other transactions were executing concurrently. Although transactions
are not a parallel programming panacea, they shift much of the burden of synchronizing and co-
ordinating parallel computations from a programmer to a compiler, to a language runtime system,
or to hardware. The challenge for the system implementers is to build an efficient transactional
memory infrastructure. This book presents an overview of the state of the art in the design and
implementation of transactional memory systems, as of early spring 2010.
1