AC: Composable Asynchronous IO for Native Languages

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.

2011-oopsla.pdf
PDF file

In  OOPSLA 2011

Publisher  ACM

Details

TypeInproceedings
Share
Share this page on Facebook
Share this page on Twitter
Share this page on LinkedIn
E-mail this page
RSS feeds
> Publications > AC: Composable Asynchronous IO for Native Languages