{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,11]],"date-time":"2026-02-11T17:57:24Z","timestamp":1770832644123,"version":"3.50.1"},"reference-count":45,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T00:00:00Z","timestamp":1540339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100010663","name":"European Research Council","doi-asserted-by":"publisher","award":["321217"],"award-info":[{"award-number":["321217"]}],"id":[{"id":"10.13039\/100010663","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001659","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"publisher","award":["SA 2918\/2-1 and SFB 1053"],"award-info":[{"award-number":["SA 2918\/2-1 and SFB 1053"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100003495","name":"Hessisches Ministerium f\u00fcr Wissenschaft und Kunst","doi-asserted-by":"publisher","award":["NICER"],"award-info":[{"award-number":["NICER"]}],"id":[{"id":"10.13039\/501100003495","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,10,24]]},"abstract":"<jats:p>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.<\/jats:p>\n          <jats:p>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.<\/jats:p>","DOI":"10.1145\/3276477","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":14,"title":["Thread-safe reactive programming"],"prefix":"10.1145","volume":"2","author":[{"given":"Joscha","family":"Drechsler","sequence":"first","affiliation":[{"name":"TU Darmstadt, Germany"}]},{"given":"Ragnar","family":"Mogk","sequence":"additional","affiliation":[{"name":"TU Darmstadt, Germany"}]},{"given":"Guido","family":"Salvaneschi","sequence":"additional","affiliation":[{"name":"TU Darmstadt, Germany"}]},{"given":"Mira","family":"Mezini","sequence":"additional","affiliation":[{"name":"TU Darmstadt, Germany"}]}],"member":"320","published-online":{"date-parts":[[2018,10,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.5555\/7929"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2005.12.104"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/2501654.2501666"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/223784.223785"},{"key":"e_1_2_2_5_1","unstructured":"Philip A Bernstein Vassos Hadzilacos and Nathan Goodman. 1986. Concurrency Control and Recovery in Database Systems. Addison-Wesley Longman Publishing Co. Inc. Boston MA USA.   Philip A Bernstein Vassos Hadzilacos and Nathan Goodman. 1986. Concurrency Control and Recovery in Database Systems. Addison-Wesley Longman Publishing Co. Inc. Boston MA USA."},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2694344.2694371"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2038916.2038923"},{"key":"e_1_2_2_8_1","volume-title":"The First Annual Scala Workshop at Scala Days.","author":"Bronson Nathan G.","year":"2010"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048101"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/212433.212464"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/11693024_20"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2187671.2187677"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462161"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660240"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/258949.258973"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/857076.857078"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2076021.2048086"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1248648.1248651"},{"key":"e_1_2_2_20_1","unstructured":"Li Haoyi. 2016. Scala.Rx Web site. https:\/\/github.com\/lihaoyi\/scala.rx (Web).  Li Haoyi. 2016. Scala.Rx Web site. https:\/\/github.com\/lihaoyi\/scala.rx (Web)."},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/78969.78972"},{"key":"e_1_2_2_22_1","unstructured":"C. A. R. Hoare. 1985. Communicating Sequential Processes. Prentice-Hall Inc. Upper Saddle River NJ USA.   C. A. R. Hoare. 1985. Communicating Sequential Processes. Prentice-Hall Inc. Upper Saddle River NJ USA."},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500365.2500584"},{"key":"e_1_2_2_24_1","unstructured":"Tetsuo Kamina and Tomoyuki Aotani. 2018. Harmonizing Signals and Events with a Lightweight Extension to Java. CoRR abs\/1803.10199 (2018). arXiv: 1803.10199 http:\/\/arxiv.org\/abs\/1803.10199  Tetsuo Kamina and Tomoyuki Aotani. 2018. Harmonizing Signals and Events with a Lightweight Extension to Java. CoRR abs\/1803.10199 (2018). arXiv: 1803.10199 http:\/\/arxiv.org\/abs\/1803.10199"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500365.2500588"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103665"},{"key":"e_1_2_2_28_1","doi-asserted-by":"crossref","unstructured":"Jesse Liberty and Paul Betts. 2011. Programming Reactive Extensions and LINQ (1st ed.). Apress Berkely CA USA.   Jesse Liberty and Paul Betts. 2011. Programming Reactive Extensions and LINQ (1st ed.). Apress Berkely CA USA.","DOI":"10.1007\/978-1-4302-3748-8_1"},{"key":"e_1_2_2_29_1","doi-asserted-by":"crossref","unstructured":"Andoni Lombide Carreton Stijn Mostinckx Tom Van Cutsem and Wolfgang De Meuter. 2010. Loosely-Coupled Distributed Reactive Programming in Mobile Ad Hoc Networks. In Objects Models Components Patterns Jan Vitek (Ed.). Springer Berlin Heidelberg Berlin Heidelberg 41\u201360.   Andoni Lombide Carreton Stijn Mostinckx Tom Van Cutsem and Wolfgang De Meuter. 2010. Loosely-Coupled Distributed Reactive Programming in Mobile Ad Hoc Networks. In Objects Models Components Patterns Jan Vitek (Ed.). Springer Berlin Heidelberg Berlin Heidelberg 41\u201360.","DOI":"10.1007\/978-3-642-13953-6_3"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_29"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2611286.2611290"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2018.2833109"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1640089.1640091"},{"key":"e_1_2_2_35_1","volume-title":"32nd European Conference on Object-Oriented Programming (ECOOP 2018) (Leibniz International Proceedings in Informatics (LIPIcs))","author":"Mogk Ragnar"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1229428.1229442"},{"key":"e_1_2_2_37_1","volume-title":"Practical Aspects of Declarative Languages, Enrico Pontelli and V\u00edtor Santos Costa (Eds.)","author":"Peterson John"},{"key":"e_1_2_2_38_1","volume-title":"Fundamentals of Software Engineering","author":"Proen\u00e7a Jos\u00e9"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2637647.2637656"},{"key":"e_1_2_2_40_1","volume-title":"Active Expressions: Basic Building Blocks for Reactive Programming. CoRR abs\/1703.10859","author":"Ramson Stefan","year":"2017"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/2661136.2661140"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635895"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2577080.2577083"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/2892664.2892670"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/224964.224987"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPP.2011.87"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254084"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276499"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276477","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276477","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:01:58Z","timestamp":1750208518000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276477"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":45,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276477"],"URL":"https:\/\/doi.org\/10.1145\/3276477","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,10,24]]},"assertion":[{"value":"2018-10-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}