Modular transactional memory

Matthew Brecknell, Paul Roe · QUT ePrints (Queensland University of Technology) · 2010

Software transactional memory has the potential to greatly simplify development of concurrent software, by supporting safe composition of concurrent shared-state abstractions. However, STM semantics are de-fined in terms of low-level reads and writes on individ-ual memory locations, so implementations are unable to take advantage of the properties of user-defined ab-stractions. Consequently, the performance of trans-actions over some structures can be disappointing. We present Modular Transactional Memory, our framework which allows programmers to extend STM with concurrency control algorithms tailored to the data structures they use in concurrent programs. We describe our implementation in Concurrent Haskell, and two example structures: a finite map which al-lows concurrent transactions to operate on disjoint sets of keys, and a non-deterministic channel which supports concurrent sources and sinks. Our approach is based on previous work by others on boosted and open-nested transactions, with one significant development: transactions are given types which denote the concurrency control algorithms they employ. Typed transactions offer a higher level of as-surance for programmers reusing transactional code, and allow more flexible abstract concurrency control.

Read the paper · More papers on PaperTik