Abstract
Although asynchronous communication is an important feature of many concurrent systems, building composable abstractions that leverage asynchrony is challenging. This is because an asynchronous operation necessarily involves two distinct threads of control -- the thread that initiates the operation, and the thread that discharges it. Existing attempts to marry composability with asynchrony either entail sacrificing performance (by limiting the degree of asynchrony permitted), or modularity (by forcing natural abstraction boundaries to be broken).
In this paper, we present the design and rationale for asynchronous events, an abstraction that enables composable construction of complex asynchronous protocols without sacrificing the benefits of abstraction or performance. Asynchronous events are realized in the context of Concurrent ML's first-class event abstraction. We discuss the definition of a number of useful asynchronous abstractions that can be built on top of asynchronous events (e.g., composable callbacks) and provide a detailed case study of how asynchronous events can be used to substantially improve the modularity and performance of an I/O-intensive highly concurrent server application.
- Joe Armstrong, Robert Virding, Claes Wikstrom, and Mike Williams. Concurrent Programming in Erlang. Prentice-Hall, 2nd edition, 1996. Google Scholar
Digital Library
- Jean-Pierre Banâtre and Daniel Le Métayer. Programming by Multiset Transformation. Commun. ACM, 36(1), 1993. Google Scholar
Digital Library
- Prakash Chandrasekaran, Christopher L. Conway, Joseph M. Joy, and Sriram K. Rajamani. Programming asynchronous layers with clarity. In FSE, pages 65--74, 2007. Google Scholar
Digital Library
- Avik Chaudhuri. A Concurrent Ml Library in Concurrent Haskell. In ICFP, pages 269--280, 2009. Google Scholar
Digital Library
- Erik Demaine. First-Class Communication in MPI. In MPIDC '96: Proceedings of the Second MPI Developers Conference, 1996. Google Scholar
Digital Library
- Kevin Donnelly and Matthew Fluet. Transactional Events. The Journal of Functional Programming, pages 649--706, 2008. Google Scholar
Digital Library
- Laura Effinger-Dean, Matthew Kehrt, and Dan Grossman. Transactional Events for ML. In ICFP, pages 103--114, 2008. Google Scholar
Digital Library
- Matthew Flatt and Robert Bruse Findler. Kill-safe Synchronization Abstractions. In PLDI, pages 47--58, 2004. Google Scholar
Digital Library
- Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. Implicitly-Threaded Parallelism in Manticore. In ICFP, pages 119--130, 2008. Google Scholar
Digital Library
- Cédric Fournet, Fabrice Le Fessant, Luc Maranget, and Alan Schmidt. JoCaml: A Language for Concurrent Distributed and Mobile Programming. In Advanced Functional Programming, pages 129--158. 2002.Google Scholar
- Cédric Fournet and Georges Gonthier. The reflexive cham and the join-calculus. In POPL, pages 372--385, 1996. Google Scholar
Digital Library
- Peng Li and Steve Zdancewic. Combining Events and Threads for Scalable Network Services, and Evaluation of Monadic, Application-Level Concurrency Primitives. In PLDI, pages 189--199, 2007. Google Scholar
Digital Library
- Simon Marlow, Simon Peyton Jones, Andrew Moran, and John Reppy. Asynchronous Exceptions in Haskell. In PLDI, pages 274--285, 2001. Google Scholar
Digital Library
- MLton. http://www.mlton.org.Google Scholar
- John Reppy and Yingqi Xiao. Specialization of CML Message-Passing Primitives. In POPL, pages 315--326, 2007. Google Scholar
Digital Library
- John H. Reppy. Concurrent Programming in ML. Cambridge University Press, 1999. Google Scholar
Digital Library
- George Russell. Events in Haskell, and How to Implement Them. In ICFP, pages 157--168, 2001. Google Scholar
Digital Library
- Don Syme, Adam Granicz, and Antonio Cisternino. Expert F#. Apress, 2007.Google Scholar
- Lukasz Ziarek, K.C. Sivaramakrishnan, and Suresh Jagannathan. Composable Asynchronous Events. Technical Report TR-11-09, Dept. of Computer Science, Purdue University, 2011.Google Scholar
Digital Library
Index Terms
Composable asynchronous events
Recommendations
Composable asynchronous events
PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and ImplementationAlthough asynchronous communication is an important feature of many concurrent systems, building composable abstractions that leverage asynchrony is challenging. This is because an asynchronous operation necessarily involves two distinct threads of ...
Transactional events
Proceedings of the 2006 ICFP conferenceConcurrent programs require high-level abstractions in order to manage complexity and enable compositional reasoning. In this paper, we introduce a novel concurrency abstraction, dubbed transactional events, which combines first-class synchronous ...
Transactional events
ICFP '06: Proceedings of the eleventh ACM SIGPLAN international conference on Functional programmingConcurrent programs require high-level abstractions in order to manage complexity and enable compositional reasoning. In this paper, we introduce a novel concurrency abstraction, dubbed transactional events, which combines first-class synchronous ...







Comments