posted on 2003-02-01, 00:00authored bySeth C. Goldstein, Klaus Erik Schauser, David Culler
This paper presents three novel language implementation primitives—lazy threads, stacklets, and
synchronizers—andshows how they combine to provide a parallel call at nearly the efficiency of
a sequential call. The central idea is to transform parallel calls into parallel-ready sequential calls.
Excess parallelism degrades into sequential calls with the attendant efficient stack management
and direct transfer of control and data, unless a call truly needs to execute in parallel, in which
case it gets its own thread of control. We show how these techniques can be applied to distribute
work efficiently on multiprocessors.