Tim Harris, Martin Abadi, Rebecca Isaacs, and Ross McIlroy
October 2011
This paper introduces AC, a set of language constructs for
composable asynchronous IO in native languages such as
C/C++. Unlike traditional synchronous IO interfaces, AC
lets a thread issue multiple IO requests so that they can
be serviced concurrently, and so that long-latency operations
can be overlapped with computation. Unlike traditional
asynchronous IO interfaces, AC retains a sequential
style of programming without requiring code to use multiple
threads, and without requiring code to be “stack-ripped”
into chains of callbacks. AC provides an async statement to
identify opportunities for IO operations to be issued concurrently,
a do..finish block that waits until any enclosed
async work is complete, and a cancel statement that
requests cancellation of unfinished IO within an enclosing
do..finish. We give an operational semantics for a core
language.We describe and evaluate implementations that are
integrated with message passing on the Barrelfish research
OS, and integrated with asynchronous file and network IO
on MicrosoftWindows.We show that AC offers comparable
performance to existing C/C++ interfaces for asynchronous
IO, while providing a simpler programming model.
![]() PDF file |
In OOPSLA 2011
Publisher ACM
| Type | Inproceedings |