Speaker Tim Harris
Host Chris Gould-Sandhu
Date recorded 1 June 2012
In this lecture I’ll introduce some of our recent work on asynchronous C (“AC”) – a technique for making it easier for programmers to write high-performance servers and other communication-intensive applications. 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”. I’ll describe the design of AC, along with initial implementations that are integrated with message passing on the Barrelfish research OS, and integrated with asynchronous file and network IO on Microsoft Windows. I’ll show that AC offers comparable performance to existing C/C++ interfaces for asynchronous IO, while providing a simpler programming model.
©2012 Microsoft Corporation. All rights reserved.