LearnViz CompSci
Home / Learn / Concurrency & Parallelism / Communicating Sequential Processes

Intermediate Topic 24 of 51 Concurrency & Parallelism

Communicating Sequential Processes

Concurrency via channels between processes.

How it works

Communicating Sequential Processes, formulated by Tony Hoare, is a formal model of concurrency in which independent sequential processes interact solely by synchronous message passing over channels, with no shared memory. A send blocks until a receiver is ready, forming a rendezvous, and choice operators let a process wait on several channels. Process algebra allows reasoning about deadlock and equivalence. It influenced occam, Go's channels and select statement and Clojure's core.async.

Where it is used

Designing concurrent systems as networks of processes, verifying protocols with model checkers such as FDR, and structuring Go programs around channels use CSP ideas.

Common pitfall

Unbuffered channels can deadlock when processes wait on each other in a cycle, and forgetting to close channels or drain them leaks goroutines. Channel-based designs still need care with shared data referenced through messages. CSP is not the same as the actor model: CSP channels are first-class and synchronous, while actors use named mailboxes and asynchronous sends. Use select with timeouts and clear ownership.

Where it fits in the course

Communicating Sequential Processes is topic 24 of 51 in Concurrency & Parallelism, rated Intermediate. It follows Actor Model. The next topic is Go Goroutines and Channels.

Practice and explore

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Concurrency & Parallelism quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Communicating Sequential Processes?
Concurrency via channels between processes. It belongs to Concurrency & Parallelism and is an intermediate-level topic.
Where do people use Communicating Sequential Processes?
Designing concurrent systems as networks of processes, verifying protocols with model checkers such as FDR, and structuring Go programs around channels use CSP ideas.
What is the most common mistake with Communicating Sequential Processes?
Unbuffered channels can deadlock when processes wait on each other in a cycle, and forgetting to close channels or drain them leaks goroutines.
What should I learn before this topic?
Start with Actor Model, the topic just before it in Concurrency & Parallelism.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Concurrency & Parallelism quiz.
Is Communicating Sequential Processes hard to learn?
It is an Intermediate topic. Be comfortable with the Beginner topics in this area first, then read the common pitfall carefully, since it is where most mistakes happen.
How long does it take to learn Communicating Sequential Processes?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to Communicating Sequential Processes?
Actor Model, Go Goroutines and Channels, Green Threads are closely connected. The full list is in the related topics section of this page.
What should I study after Communicating Sequential Processes?
Continue with Go Goroutines and Channels, the next topic in Concurrency & Parallelism.

Related topics