Using threads in interactive systems: a case study

  • Authors:
  • Carl Hauser;Christian Jacobi;Marvin Theimer;Brent Welch;Mark Weiser

  • Affiliations:
  • Computer Science Laboratory, Xerox PARC, 3333 Coyote Hill Road, Palo Alto, California;Computer Science Laboratory, Xerox PARC, 3333 Coyote Hill Road, Palo Alto, California;Computer Science Laboratory, Xerox PARC, 3333 Coyote Hill Road, Palo Alto, California;Computer Science Laboratory, Xerox PARC, 3333 Coyote Hill Road, Palo Alto, California;Computer Science Laboratory, Xerox PARC, 3333 Coyote Hill Road, Palo Alto, California

  • Venue:
  • SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
  • Year:
  • 1993

Quantified Score

Hi-index 0.00

Visualization

Abstract

We describe the results of examining two large research and commercial systems for the ways that they use threads. We used three methods: analysis of macroscopic thread statistics, analysis the microsecond spacing between thread events, and reading the implementation code. We identify ten different paradigms of thread usage: defer work, general pumps, slack processes, sleepers, one-shots, deadlock avoidance, rejuvenation, serializers, encapsulated fork and exploiting parallelism. While some, like defer work, are well known, others have not been previously described. Most of the paradigms cause few problems for programmers and help keep the resulting system implementation understandable. The slack process paradigm is both particularly effective in improving system performance and particularly difficult to make work well. We observe that thread priorities are difficult to use and may interfere in unanticipated ways with other thread primitives and paradigms. Finally, we glean from the practices in this code several possible future research topics in the area of thread abstractions.