Integrating Transactional Memory into C

We discuss the integration of transactional memory into the C++ programming language. We take a decidedly pragmatic approach in this paper: Our goal is to induce minimal changes consistent with implementability, usable transactional semantics, and the prevalent styles of C++ programs. In particular, we want to avoid designing a new language; rather, we want to enable incremental adoption of transactional memory into existing C++ code bases. The contribution of this paper is a careful analysis of the options rather than a final solution. In some cases, reasonable alternative s exist and experience in implementation and use must guide the final choice.

[1]  Amos Israeli,et al.  Disjoint-access-parallel implementations of strong shared memory primitives , 1994, PODC '94.

[2]  Kunle Olukotun,et al.  Transactional memory coherence and consistency , 2004, Proceedings. 31st Annual International Symposium on Computer Architecture, 2004..

[3]  Bradley C. Kuszmaul,et al.  Unbounded transactional memory , 2005, 11th International Symposium on High-Performance Computer Architecture.

[4]  Virendra J. Marathe,et al.  Adaptive Software Transactional Memory , 2005, DISC.

[5]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[6]  James R. Goodman,et al.  Transactional lock-free execution of lock-based programs , 2002, ASPLOS X.

[7]  Sean Lie Hardware Support for Unbounded Transactional Memory , 2004 .

[8]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

[9]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[10]  Nir Shavit,et al.  What Really Makes Transactions Faster , 2006 .

[11]  David A. Wood,et al.  LogTM: log-based transactional memory , 2006, The Twelfth International Symposium on High-Performance Computer Architecture, 2006..

[12]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[13]  Maurice Herlihy,et al.  Obstruction-free synchronization: double-ended queues as an example , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[14]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[15]  Maurice Herlihy,et al.  Snapshots and software transactional memory , 2005, Sci. Comput. Program..

[16]  Kunle Olukotun,et al.  The Atomos transactional programming language , 2006, PLDI '06.

[17]  Mark Moir Practical implementations of non-blocking synchronization primitives , 1997, PODC '97.

[18]  James R. Goodman,et al.  Speculative lock elision: enabling highly concurrent multithreaded execution , 2001, MICRO.

[19]  Mark Moir,et al.  Hybrid transactional memory , 2006, ASPLOS XII.

[20]  Suresh Jagannathan,et al.  Transactional Monitors for Concurrent Objects , 2004, ECOOP.

[21]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[22]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[23]  David Eisenstat,et al.  Lowering the Overhead of Nonblocking Software Transactional Memory , 2006 .

[24]  Maurice Herlihy,et al.  A flexible framework for implementing software transactional memory , 2006, OOPSLA '06.

[25]  William N. Scherer,et al.  Contention Management in Dynamic Software Transactional Memory ∗ , 2004 .

[26]  Josep Torrellas,et al.  Speculative synchronization: applying thread-level speculation to explicitly parallel applications , 2002, ASPLOS X.

[27]  Nir Shavit,et al.  Transactional Locking II , 2006, DISC.

[28]  Mark D. Hill,et al.  Thread-Level Transactional Memory , 2005 .

[29]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[30]  Rachid Guerraoui,et al.  Toward a theory of transactional contention managers , 2005, PODC '05.

[31]  Virendra J. Marathe,et al.  Design tradeoffs in modern software transactional memory systems , 2004 .

[32]  Maurice Herlihy,et al.  Virtualizing transactional memory , 2005, 32nd International Symposium on Computer Architecture (ISCA'05).

[33]  Dan Grossman,et al.  AtomCaml: first-class atomicity via rollback , 2005, ICFP '05.

[34]  Keir Fraser,et al.  Practical lock-freedom , 2003 .

[35]  Keir Fraser,et al.  Concurrent programming without locks , 2007, TOCS.

[36]  Bratin Saha,et al.  McRT-STM: a high performance software transactional memory system for a multi-core runtime , 2006, PPoPP '06.

[37]  Jan-Willem Maessen,et al.  Towards a Safer Interaction with Transactional Memory by Tracking Object Visibility , 2005 .

[38]  Milo M. K. Martin,et al.  Deconstructing Transactional Semantics: The Subtleties of Atomicity , 2005 .

[39]  Ali-Reza Adl-Tabatabai,et al.  McRT-Malloc: a scalable transactional memory allocator , 2006, ISMM '06.

[40]  Brian T. Lewis,et al.  Compiler and runtime support for efficient software transactional memory , 2006, PLDI '06.