Edward A. Lee

EECS Department

University of California, Berkeley

Technical Report No. UCB/EECS-2006-1

January 10, 2006

Threads are a seemingly straightforward adaptation of the dominant sequential model of computation to concurrent systems. Languages require little or no syntactic changes to support threads, and operating systems and architectures have evolved to efficiently support them. Many technologists are pushing for increased use of multithreading in software in order to take advantage of the predicted increases in parallelism in computer architectures. In this paper, I argue that this is not a good idea. Although threads seem to be a small step from sequential computation, in fact, they represent a huge step. They discard the most essential and appealing properties of sequential computation: understandability, predictability, and determinism. Threads, as a model of computation, are wildly nondeterministic, and the job of the programmer becomes one of pruning that nondeterminism. Although many research techniques improve the model by offering more effective pruning, I argue that this is approaching the problem backwards. Rather than pruning nondeterminism, we should build from essentially deterministic, composable components. Nondeterminism should be explicitly and judiciously introduced where needed, rather than removed where not needed. The consequences of this principle are profound. I argue for the development of concurrent coordination languages based on sound, composable formalisms. I believe that such languages will yield much more reliable, and more concurrent programs.

Author Comments: The published version of this paper is in IEEE Computer 39(5):33-42, May 2006.

BibTeX citation:

@techreport{Lee:EECS-2006-1, Author = {Lee, Edward A.}, Title = {The Problem with Threads}, Institution = {EECS Department, University of California, Berkeley}, Year = {2006}, Month = {Jan}, URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html}, Number = {UCB/EECS-2006-1}, Note = {The published version of this paper is in IEEE Computer 39(5):33-42, May 2006.}, Abstract = {Threads are a seemingly straightforward adaptation of the dominant sequential model of computation to concurrent systems. Languages require little or no syntactic changes to support threads, and operating systems and architectures have evolved to efficiently support them. Many technologists are pushing for increased use of multithreading in software in order to take advantage of the predicted increases in parallelism in computer architectures. In this paper, I argue that this is not a good idea. Although threads seem to be a small step from sequential computation, in fact, they represent a huge step. They discard the most essential and appealing properties of sequential computation: understandability, predictability, and determinism. Threads, as a model of computation, are wildly nondeterministic, and the job of the programmer becomes one of pruning that nondeterminism. Although many research techniques improve the model by offering more effective pruning, I argue that this is approaching the problem backwards. Rather than pruning nondeterminism, we should build from essentially deterministic, composable components. Nondeterminism should be explicitly and judiciously introduced where needed, rather than removed where not needed. The consequences of this principle are profound. I argue for the development of concurrent coordination languages based on sound, composable formalisms. I believe that such languages will yield much more reliable, and more concurrent programs.} }

EndNote citation:

%0 Report %A Lee, Edward A. %T The Problem with Threads %I EECS Department, University of California, Berkeley %D 2006 %8 January 10 %@ UCB/EECS-2006-1 %U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html %F Lee:EECS-2006-1