Programming by multiset transformation
Communications of the ACM
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
The reflexive CHAM and the join-calculus
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ML
Asynchronous exceptions in Haskell
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Events in Haskell, and how to implement them
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
First Class Communication in MPI
MPIDC '96 Proceedings of the Second MPI Developers Conference
Kill-safe synchronization abstractions
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Specialization of CML message-passing primitives
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Programming asynchronous layers with CLARITY
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Implicitly-threaded parallelism in Manticore
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
A concurrent ML library in concurrent Haskell
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
AC: composable asynchronous IO for native languages
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Eliminating read barriers through procrastination and cleanliness
Proceedings of the 2012 international symposium on Memory Management
Non-blocking inter-partition communication with wait-free pair transactions
Proceedings of the 11th International Workshop on Java Technologies for Real-time and Embedded Systems
Hi-index | 0.00 |
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.