paper

Communicating Sequential Processes

  • Authors:

📜 Abstract

This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When combined with a development of Dijkstra's guarded command, these concepts are surprisingly versatile. Their use is illustrated by sample solutions of a variety of familiar programming exercises.

✨ Summary

Hoare’s paper established communicating sequential processes (CSP) as a programming model in which independently executing sequential processes interact through explicit, synchronized communication. Its core mechanisms—parallel composition, input/output communication, guarded nondeterministic choice, and structured process arrays—provided a basis for later work on concurrent-programming languages, semantics, verification, and implementation.

The ideas were subsequently developed into formal semantic and axiomatic theories of CSP, including work defining process behaviors and reasoning about correctness. (sciencedirect.com) CSP also influenced implementation-oriented languages: contemporary accounts of occam describe its process-and-channel model as based on communicating processes derived from Hoare’s work, and surveys explicitly identify occam as a language resulting from the CSP proposal. (transputer.net)

The model also influenced later industrial programming practice through Go’s concurrency design. Official Go materials state that channels were adopted from Hoare’s CSP and identify goroutines, channels, and select as Go’s principal concurrency mechanisms. (go.dev)