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.
Wed 20 JulDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
Wed 20 Jul
Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
15:30 - 16:45 | |||
15:30 25mTalk | Making an Embedded DBMS JIT-friendly Research Track CF Bolz-Tereick King's College London , Darya Melicher Carnegie Mellon University, Laurence Tratt King's College London Link to publication DOI Pre-print Media Attached | ||
15:55 25mTalk | QL: Object-oriented Queries on Relational Data Research Track Link to publication DOI Pre-print | ||
16:20 25mTalk | Transactional Tasks: Parallelism in Software Transactions Research Track Janwillem Swalens Vrije Universiteit Brussel, Joeri De Koster Vrije Universiteit Brussel, Wolfgang De Meuter Vrije Universiteit Brussel Link to publication DOI Pre-print Media Attached |