Thread-safe reactive programming
Autor: | Ragnar Mogk, Mira Mezini, Joscha Drechsler, Guido Salvaneschi |
---|---|
Rok vydání: | 2018 |
Předmět: |
Computer science
Distributed computing Concurrency 020207 software engineering 02 engineering and technology Consistency (database systems) Control flow Serializability 020204 information systems Scalability 0202 electrical engineering electronic engineering information engineering Thread safety Reactive programming Software transactional memory Safety Risk Reliability and Quality Software |
Zdroj: | Proceedings of the ACM on Programming Languages. 2:1-30 |
ISSN: | 2475-1421 |
Popis: | The execution of an application written in a reactive language involves transfer of data and control flow between imperative and reactive abstractions at well-defined points. In a multi-threaded environment, multiple such interactions may execute concurrently, potentially causing data races and event ordering ambiguities. Existing RP languages either disable multi-threading or handle it at the cost of reducing expressiveness or weakening consistency. This paper proposes a model for thread-safe reactive programming (RP) that ensures abort-free strict serializability under concurrency while sacrificing neither expressiveness nor consistency. We also propose an architecture for integrating a corresponding scheduler into the RP language runtime, such that thread-safety is provided "out-of-the-box" to the applications. We show the feasibility of our proposal by providing and evaluating a ready-to-use implementation integrated into the REScala programming language. The scheduling algorithm is formally proven correct. A thorough empirical evaluation shows that reactive applications build on top of it scale with multiple threads, while the scheduler incurs acceptable performance overhead in a single-threaded configuration. The scalability enabled by our scheduler is roughly on-par with that of hand-crafted application-specific locking and better than the scalability enabled by a scheduler using an off-the-shelf software transactional memory library. |
Databáze: | OpenAIRE |
Externí odkaz: |