Computer Science Department
School of Computer Science, Carnegie Mellon University
Practical Abstractions for Concurrent Interactive Programs
Stefan K. Muller, William A. Duff, Umut A. Acar
We propose abstractions for designing and implementing concurrent interactive applications, such as graphical user interfaces, games and simulations, that interact with the external world in complex ways. The abstractions enable the programmer to write software that interacts with external agents (e.g., mouse, keyboard, network, the operating system) both synchronously and asynchronously in a uniform manner by means of several simple (concurrent) primitives. We specify the semantics of the primitives and provide an implementation as an OCaml library. We develop a software framework for assessing the responsiveness of interactive applications and evaluate our techniques by considering a range of applications including games, physics simulations, a music-streaming server, and a Unix shell, as well as microbenchmarks that enable quantitative analysis. Our results show the proposed abstractions to be expressive and performant.