Developers often require different concurrency models to fit the various concurrency needs of the different parts of their applications. Many programming languages, such as Clojure, Scala, and Haskell, cater to this need by incorporating different concurrency models. It has been shown that, in practice, developers often combine these concurrency models. However, they are often combined in an ad hoc way and the semantics of the combination is not always well-defined. The starting hypothesis of this paper is that different concurrency models need to be carefully integrated such that the properties of each individual model are still maintained.

This paper proposes one such combination, namely the combination of the actor model and software transactional memory. In this paper we show that, while both individual models offer strong safety guarantees, these guarantees are no longer valid when they are combined. The main contribution of this paper is a novel hybrid concurrency model called transactional actors that combines both models while preserving their guarantees. This paper also presents an implementation in Clojure and an experimental evaluation of the performance of the transactional actor model.
Original languageEnglish
Title of host publicationProceedings of the 4th ACM SIGPLAN International Workshop on Software Engineering for Parallel Systems
Place of PublicationNew York, NY, USA
Number of pages11
ISBN (Print)978-1-4503-5517-9
StatePublished - 23 Oct 2017
EventSoftware Engineering for Parallel Systems - Vancouver, BC, Canada
Duration: 23 Oct 201723 Oct 2017


WorkshopSoftware Engineering for Parallel Systems
Abbreviated titleSEPS
CityVancouver, BC
Internet address

    Research areas

  • concurrency, parallelism, Software Transactional Memory, actors

ID: 35245384