Small, Fast, & Simple

February 23, 2015

Communicating Sequential Processes


Tony Hoare’s concept of communicating sequential processes (CSP) is heavily used by the Go programming language and has been adopted by Clojure under the name core.async. CSP is a remarkably simple pattern for handling multiple things at once. As the name implies, it’s formulated on separate, co-running processes that communicate and coordinate with each other over synchronous channels. CSP allows a language to break out of being either synchronous or asynchronous and be both. CSP is the feature I miss most in languages without it.