Transactional Tasks: Parallelism in Software Transactions

Research output: Unpublished contribution to conferencePoster


Many programming languages, such as Clojure, Scala, and Haskell, support different concurrency models. In practice these models are often combined, however the semantics of the combinations are not always well-defined. In this paper, we study the combination of futures and Software Transactional Memory. Currently, futures created within a transaction cannot access the transactional state safely, violating the serializability of the transactions and leading to unexpected behavior. We define transactional tasks: a construct that allows futures to be created in transactions. Transactional tasks allow the parallelism in a transaction to be exploited, while providing safe access to the state of their encapsulating transaction. We show that transactional tasks have several useful properties: they are coordinated, they maintain serializability, and they do not introduce non-determinism. As such, transactional tasks combine futures and Software Transactional Memory, allowing the potential parallelism of a program to be fully exploited, while preserving the properties of the separate models where possible.
Original languageEnglish
Publication statusPublished - 19 Jul 2016
Event30th European Conference on Object-Oriented Programming (ECOOP 2016) - Rome, Italy
Duration: 17 Jul 201622 Jul 2016


Conference30th European Conference on Object-Oriented Programming (ECOOP 2016)
Abbreviated titleECOOP 2016
Internet address


Dive into the research topics of 'Transactional Tasks: Parallelism in Software Transactions'. Together they form a unique fingerprint.

Cite this