Creative Commons Attribution 3.0 Germany license
Many programming languages support different concurrency models. In practice these models are often combined, however the semantics of the combinations are not always well-defined. We studied the combination of futures and Software Transactional Memory. We introduce transactional tasks, a mechanism to create futures in a transaction. Transactional tasks allow the parallelism in a transaction to be exploited, while providing safe access to the state of their encapsulating transaction. We created Clojure-TxTk, a fork of Clojure with support for transactional tasks. Furthermore, we ported two applications from the STAMP benchmark suite, and extended these to use transactional tasks: Labyrinth-TxTk and Bayes-TxTk. Lastly, TxTk-Redex is a machine-executable implementation of the operational semantics, in PLT Redex.
@Article{swalens:DARTS.2.1.13,
author = {Swalens, Janwillem},
title = {{Transactional Tasks: Parallelism in Software Transactions (Artifact)}},
pages = {13:1--13:2},
journal = {Dagstuhl Artifacts Series},
ISSN = {2509-8195},
year = {2016},
volume = {2},
number = {1},
editor = {Swalens, Janwillem},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.2.1.13},
URN = {urn:nbn:de:0030-drops-61348},
doi = {10.4230/DARTS.2.1.13},
annote = {Keywords: Concurrency, Parallelism, Futures, Threads, Fork/Join, Software Transactional Memory}
}
e9d1951304299497e1a1942d9926fd0b
(Get MD5 Sum)