skip to main content
10.1145/1065944.1065952acmconferencesArticle/Chapter ViewAbstractPublication PagesppoppConference Proceedingsconference-collections
Article

Composable memory transactions

Published:15 June 2005Publication History

ABSTRACT

Writing concurrent programs is notoriously difficult, and is of increasing practical importance. A particular source of concern is that even correctly-implemented concurrency abstractions cannot be composed together to form larger abstractions. In this paper we present a new concurrency model, based on transactional memory, that offers far richer composition. All the usual benefits of transactional memory are present (e.g. freedom from deadlock), but in addition we describe new modular forms of blocking and choice that have been inaccessible in earlier work.

References

  1. Benton, N., Cardelli, L., and Fournet, C. Modern concurrency abstractions for C#. In Proceedings of European Conference on Object-Oriented Programming (June 2002), vol. 2374 of Lecture Notes in Computer Science, pp. 415--425. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Clarke, D. G., Potter, J. M., and Noble, J. Ownership types for flexible alias protection. In OOPSLA '98: Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (1998), pp. 48--64. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Daume III, H. Yet Another Haskell Tutorial. 2004. Available at http://www.isi.edu/~hdaume/htut/ or via http://www.haskell.org/.Google ScholarGoogle Scholar
  4. Ennals, R. Feris: a functional environment for retargetable interactive systems. Batchelors thesis, University of Cambridge Computer Laboratory, 2000.Google ScholarGoogle Scholar
  5. Flatt, M., and Findler, R. B. Kill-safe synchronization abstractions. In PLDI '04: Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation (2004), pp. 47--58. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Fraser, K. Practical lock-freedom. PhD thesis, University of Cambridge Computer Laboratory, Feb. 2004. Also published as UCAM-CL-TR-579.Google ScholarGoogle Scholar
  7. Gray, J., and Reuter, A. Transaction Processing: Concepts and Techniques. Morgan Kaufmann Publishers Inc., 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Hammond, L., Carlstrom, B. D., Wong, V., Hertzberg, B., Chen, M., Kozyrakis, C., and Olukotun, K. Programming with transactional coherence and consistency (TCC). In Proceedings of the 11th international conference on Architectural support for programming languages and operating systems (2004), pp. 1--13. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Harris, T., and Fraser, K. Language support for lightweight transactions. In Proc ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications (OOPSLA) (2003), pp. 388--402. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Herlihy, M., Luchangco, V., Moir, M., and Scherer, III, W. N. Software transactional memory for dynamic-sized data structures. In Proceedings of the twenty-second annual symposium on Principles of distributed computing (2003), pp. 92--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Herlihy, M., and Moss, J. E. B. Transactional memory: architectural support for lock-free data structures. In Proceedings of the 20th annual international symposium on Computer architecture (1993), pp. 289--300. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Israeli, A., and Rappoport, L. Disjoint-access-parallel implementations of strong shared memory primitives. In Proceedings of the thirteenth annual ACM symposium on Principles of distributed computing (1994), pp. 151--160. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Jordan, M., and Atkinson, M. Orthogonal persistence for Java --- a mid-term report. In Proceedings of the 3rd International Workshop on Persistence and Java (Sept. 1998), pp. 335--352. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Kelsey, R., Rees, J., and Sperber, M. The incomplete scheme 48 reference manual for release 1.1. July 2004.Google ScholarGoogle Scholar
  15. Lamb, C., Landis, G., Orenstein, J., and Weinreb, D. The ObjectStore database system. Commun. ACM 34, 10 (1991), 50--63. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Liskov, B. Distributed programming in Argus. Commun. ACM 31, 3 (1988), 300--312. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Marlow, S., Peyton-Jones, S., Moran, A., and Reppy, J. Asynchronous exceptions in Haskell. In ACM Conference on Programming Languages Design and Implementation (PLDI'01), ACM, pp. 274--285. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Martinez, J. F., and Torrellas, J. Speculative synchronization: applying thread-level speculation to explicitly parallel applications. In Proceedings of the 10th international conference on architectural support for programming languages and operating systems (ASPLOS-X) (2002), pp. 18--29. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Moss, E. B. Nested transactions: An approach to reliable distributed computing. Tech. rep., Massachusetts Institute of Technology, 1981. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Oplinger, J., and Lam, M. S. Enhancing software reliability with speculative threads. In Proceedings of the 10th international conference on architectural support for programming languages and operating systems (ASPLOS-X) (2002), pp. 184--196. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Peyton Jones, S. Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell. In Engineering theories of software construction, Marktoberdorf Summer School 2000, C. Hoare, M. Broy, and R. Steinbrueggen, Eds., NATO ASI Series, IOS Press, pp. 47--96.Google ScholarGoogle Scholar
  22. Peyton Jones, S., Gordon, A., and Finne, S. Concurrent Haskell. In 23rd ACM Symposium on Principles of Programming Languages (POPL'96), pp.295--308. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Peyton-Jones, S., and Wadler, P. Imperative functional programming. In 20th ACM Symposium on Principles of Programming Languages(POPL'93), pp. 71--84. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Rajwar, R., and Goodman, J. R. Transactional lock-free execution of lock-based programs. In Proceedings of the 10th international conference on architectural support for programming languages and operating systems (ASPLOS-X) (2002), pp. 5--17. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Reppy, J. Concurrent programming in ML. Cambridge University Press, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Satyanarayanan, M., Mashburn, H. H., Kumar, P., Steere, D. C., and Kistler, J. J. Lightweight recoverable virtual memory. ACM Transactions on Computer Systems 12, 1 (1994), 33--57. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Shavit, N., and Touitou, D. Software transactional memory. In Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing (1995), pp. 204--213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Shinnar, A., Tarditi, D., Plesko, M., and Steensgaard, B. Integrating support for undo with exception handling. Tech. Rep. MSR-TR-2004-140, Microsoft Research, Dec. 2004.Google ScholarGoogle Scholar
  29. Stone, J. M., Stone, H. S., Heidelberger, P., and Turek, J. Multiple reservations and the Oklahoma update. IEEE Parallel and Distributed Technology 1, 4 (Nov. 1993), 58--71. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Welc, A., Hosking, A. L., and Jagannathan, S. Preemption-based avoidance of priority inversion for java. In Proceedings of the 2004 International Conference on Parallel Processing (ICPP) (Aug. 2004), pp. 529--538. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Welc, A., Jagannathan, S., and Hosking, A. Transactional monitors for concurrent objects. In Proceedings of the European Conference on Object-Oriented Programming (June 2004).Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Composable memory transactions

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        PPoPP '05: Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
        June 2005
        310 pages
        ISBN:1595930809
        DOI:10.1145/1065944

        Copyright © 2005 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 15 June 2005

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate230of1,014submissions,23%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader