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)
Feedback for Dagstuhl Publishing