Writing concurrent programs is notoriously difficult, and is of increasing practical importance. In this series of lectures, I introduce “transactional memory” (TM) as a technique for building shared memory data structures. As I illustrate, it can be much easier to build shared memory data structures by using TM than it is to use conventional abstractions such as locks, or the atomic compare-and-swap instruction.
In this lecture, I introduce TM and some of the language constructs that we have built using it. I describe the basic “Bartok-STM” algorithm to illustrate how TM can be built on conventional computer hardware.