2014
DOI: 10.4204/eptcs.155.8
|View full text |Cite
|
Sign up to set email alerts
|

Towards Composable Concurrency Abstractions

Abstract: In the past decades, many different programming models for managing concurrency in applications have been proposed, such as the actor model, Communicating Sequential Processes, and Software Transactional Memory. The ubiquity of multi-core processors has made harnessing concurrency even more important. We observe that modern languages, such as Scala, Clojure, or F#, provide not one, but multiple concurrency models that help developers manage concurrency. Large end-user applications are rarely built using just a… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
6
0

Year Published

2018
2018
2020
2020

Publication Types

Select...
2
1

Relationship

2
1

Authors

Journals

citations
Cited by 3 publications
(6 citation statements)
references
References 6 publications
0
6
0
Order By: Relevance
“…This bug and its incorrect way of using the mixture of actors and futures is a good example of the misuse of the mixture of concurrency models [Swalens et al 2014]. These mixtures are often necessary for the implementation of real-world actor software [Swalens et al 2014;], however their misuse can cause bugs. The race in Figure 9 is a simple bug with a well-known anti-pattern of closing over the mutable sender() in the callback of a future.…”
Section: Root Cause 2: Racementioning
confidence: 99%
“…This bug and its incorrect way of using the mixture of actors and futures is a good example of the misuse of the mixture of concurrency models [Swalens et al 2014]. These mixtures are often necessary for the implementation of real-world actor software [Swalens et al 2014;], however their misuse can cause bugs. The race in Figure 9 is a simple bug with a well-known anti-pattern of closing over the mutable sender() in the callback of a future.…”
Section: Root Cause 2: Racementioning
confidence: 99%
“…We observe that when the language constructs of different concurrency models are combined, their original guarantees are often invalidated. In a case study of Clojure [58], we found several such cases. For instance, when a message is sent to a channel in a transaction, and the transaction rolls back, the message is not retracted.…”
Section: Actorsmentioning
confidence: 88%
“…In almost all of these examples, the languages impose no restrictions on combinations of concurrency models and developers can freely mix multiple models in a single program. (Swalens et al [58] perform a case study of Clojure.) However, as we will see in the next section, these naive combinations can break the guarantees of the separate models, potentially introducing bugs even in code considered 'safe'.…”
Section: Motivations For Combining Concurrency Modelsmentioning
confidence: 99%
“…Tasharofi et al [16] have shown that developers effectively combine multiple models in a single program: in a sample of 15 GitHub projects in Scala that use the actor model, 12 combined it with another model (illustrated in Figure 1). 8 out of 15 programs used actors and futures and 10 out of AGERE'18, November 4-9, 2018, Boston, MA, USA 2018.…”
Section: Introductionmentioning
confidence: 99%
“…8 out of 15 programs used actors and futures and 10 out of AGERE'18, November 4-9, 2018, Boston, MA, USA 2018. 15 programs actors and threads, including 6 which used all three models. Only 3 out of the 15 programs used only actors.…”
Section: Introductionmentioning
confidence: 99%