This book introduces a new mathematical approach to the study of concurrency and communication. Most suitable application of this new field is to the specification, design and implementation of computer systems which continuously act and interact with their environment.
An ALGEBRA for thinking about concurrency and nondeterminism in programs. The foundation of modern designs for communicating between threads.
An elegant and enlightening formalism for what you already know if you write multithreaded stuff that works. Feels just like structured programming did in the 70's: that being then the new formalism what you already knew if you wrote single-threaded stuff that really worked. Quoting from the forward by E. W. Dijkstra: "... the computing scientist's main challenge is not to get confused by the complexities of his own making ...".
Easier to read if you already have experience writing programs that write programs, but readable even if you flatly ignore all the academic computer science terms like "lambda expression" and "static binding". Most fun if you write the programs suggested in the exercises, of course.
Among the top five of my all-time favourite books on programming.
Tony Hoare's writing is a pleasure to read. I picked up this book after reading his chapter in "Structured Programmin" and his paper "Hints on Programming Language Design" ( http://www.cs.berkeley.edu/~necula/cs... ). "Communicating Sequential Processes" definitely deserves to be a classic, and I am still somewhat surprised when I meet programmers who aren't familiar with either the book or its subject matter.
CSP was developed by Tony Hoare and his colleagues as a concurrent programming language (most famously used with the Transputer series of chips), but is best known today for its underlying model of concurrency, in which processes are determined by their traces, divergences and failures.
Though CSP is largely superseded in the theoretical community by Milner's CCS and its descendant, the pi-calculus (pi gives you the crucial ability to model mobile processes), this is nonetheless a landmark text, and is also legally available free from usingcsp.com. The approach will be more familiar to mathematicians than computer scientists, but remains as readable today as it's always been.
Altogether a classic approach to concurrency theory from the pre-mobile process era.