TL;DR
Communicating Sequential Processes の略。1978 年に C.A.R. Hoare が発表した、並行処理を表現するための形式言語である。
仕組み
CSP では、プロセスが値のコピーを受け渡すことで互いに通信する(メッセージパッシング)。ここでいうプロセスは OS のプロセスではなく、独自の隔離された状態を持つ逐次処理のことである。
通信は、名前付きでバッファを持たないチャネルを介して行われる。
例
Go は、ゴルーチンとチャネルを使ってこのモデルを実装している。Go のデフォルトのチャネルは、CSP と同じくバッファを持たないので、送信側と受信側が同期する。
ただし Go では、チャネルが第一級オブジェクトである点が CSP と異なる。そのため、チャネルを関数や別のチャネルに渡せる。
CSP は Go のほかにも、OCaml、Erlang、Clojure の core.async、Akka などに影響を与えた。