Subobject Transactional Memory

  • Marko van Dooren
  • Dave Clarke
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7274)


Concurrent object-oriented programs are hard to write because of the frequent use of state in objects. In a concurrent program, this state must be protected against race-conditions and deadlocks, which costs a lot of effort and is error-prone. Software transactional memory is a mechanism for concurrency control that is similar to mechanisms used in databases. The programmer does not deal with low-level locks, but instead uses transaction demarcation to protect shared memory.

We show that in a statically typed subobject-oriented programming language, a transactional program requires less effort than writing a regular object-oriented programming. In addition, we show how transactionality can be added to existing classes without performing code transformations or using a meta-object protocol.


Transaction Manager Java Implementation Language Implementation Software Transactional Memory Class Elevator 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Bergel, A., Ducasse, S., Nierstrasz, O.: Classbox/j: controlling the scope of change in Java. In: OOPSLA, pp. 177–189 (2005)Google Scholar
  2. 2.
    Berger, E.D., Yang, T., Liu, T., Novark, G.: Grace: safe multithreaded programming for C/C++. In: OOPSLA, pp. 81–96 (2009)Google Scholar
  3. 3.
    Bernstein, P.A., Goodman, N.: Concurrency control in distributed database systems. ACM Comput. Surv. 13(2), 185–221 (1981)MathSciNetCrossRefGoogle Scholar
  4. 4.
    Burckhardt, S., Baldassin, A., Leijen, D.: Concurrent programming with revisions and isolation types. In: OOPSLA, pp. 691–707 (2010)Google Scholar
  5. 5.
    Burckhardt, S., Leijen, D., Sadowski, C., Yi, J., Ball, T.: Two for the price of one: a model for parallel and incremental computation. In: OOPSLA, pp. 427–444 (2011)Google Scholar
  6. 6.
    Cachopo, J.A., Rito-Silva, A.: Versioned boxes as the basis for memory transactions. Sci. Comput. Program. 63, 172–185 (2006)MathSciNetzbMATHCrossRefGoogle Scholar
  7. 7.
    Costanza, P., Herzeel, C., D’Hondt, T.: Context-oriented software transactional memory in common lisp. In: DLS, pp. 59–68 (2009)Google Scholar
  8. 8.
    Ernst, E.: Higher-Order Hierarchies. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 303–328. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  9. 9.
    Gottschlich, J.E., Connors, D.A.: DracoSTM: A practical C++ approach to software transactional memroy. In: Proceedings of the 2007 ACM SIGPLAN Symposium on Library-Centric Software Design (LCSD). In conjunction with OOPSLA (October 2007)Google Scholar
  10. 10.
    Herlihy, M., Luchangco, V., Moir, M.: A flexible framework for implementing software transactional memory. In: OOPSLA, pp. 253–262 (2006)Google Scholar
  11. 11.
    Herlihy, M., Luchangco, V., Moir, M., Scherer III, W.N.: Software transactional memory for dynamic-sized data structures. In: PODC, pp. 92–101 (2003)Google Scholar
  12. 12.
    Kulkarni, A., Liu, Y.D., Smith, S.F.: Task types for pervasive atomicity. In: OOPSLA, pp. 671–690 (2010)Google Scholar
  13. 13.
    Lublinerman, R., Zhao, J., Budimlić, Z., Chaudhuri, S., Sarkar, V.: Delegated isolation. In: OOPSLA, pp. 885–902 (2011)Google Scholar
  14. 14.
    Reed, D.P.: Naming and Synchronization in a Decentralized Computer System. PhD thesis, Cambridge, MA, USA (1978)Google Scholar
  15. 15.
    Renggli, L., Nierstrasz, O.: Transactional memory in a dynamic language. Comput. Lang. Syst. Struct. 35, 21–30 (2009)Google Scholar
  16. 16.
    Saha, B., Adl-Tabatabai, A.-R., Hudson, R.L., Minh, C.C., Hertzberg, B.: McRT-STM: a high performance software transactional memory system for a multi-core runtime. In: PPoPP, pp. 187–197 (2006)Google Scholar
  17. 17.
    Shavit, N., Touitou, D.: Software transactional memory. Distributed Computing 10, 99–116 (1997)CrossRefGoogle Scholar
  18. 18.
    van Dooren, M., Jacobs, B.: Implementations of subobject-oriented programming (2012),
  19. 19.
    van Dooren, M., Steegmans, E.: A Higher Abstraction Level Using First-Class Inheritance Relations. In: Bateni, M. (ed.) ECOOP 2007. LNCS, vol. 4609, pp. 425–449. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  20. 20.
    Yamada, Y., Iwasaki, H., Ugawa, T.: SAW: Java synchronization selection from lock or software transactional memory. In: 2011 IEEE 17th International Conference on Parallel and Distributed Systems (ICPADS), pp. 104–111. IEEE (2011)Google Scholar

Copyright information

© IFIP International Federation for Information Processing 2012

Authors and Affiliations

  • Marko van Dooren
    • 1
  • Dave Clarke
    • 1
  1. 1.IBBT-DistriNetKU LeuvenLeuvenBelgium

Personalised recommendations