Multicore processors are becoming increasingly prevalent, blurring the lines between traditional parallel programs, which use cooperative threading to reduce execution time, and interactive programs which use competitive threading to increase responsiveness. To assist programmers in developing this new class of responsive parallel programs which use threads for both of these purposes, I propose a model that combines the cooperative and competitive paradigms. The proposed model spans many levels of abstraction. The first component is a cost model that extends existing models of cooperative threading in order to allow programmers to reason about the parallel running time and the responsiveness of responsive parallel applications. The second is a language that neatly combines abstractions for both forms of threading, and enables reasoning about efficiency and responsiveness at the level of the source code. As a final component, I propose to implement the language as part of a compiler for Standard ML, and evaluate it on a benchmark suite including a number of realistic responsive parallel applications.
Thesis Committee: Umut Acar (Chair) Guy Blelloch Mor Harchol-Balter Robert Harper John Reppy (University of Chicago) Vijay Saraswat (IBM TJ Watson Research Center)