CSP
Communication Sequential Process
https://ja.wikipedia.org/wiki/Communicating_Sequential_Processes
1978 年、C.A.R Hoare が発表した並行処理を表現するための形式言語
プロセス は 値のコピーを受け渡しする ことで互いに通信(メッセージパッシング)する
warning.icon ここでのプロセスは OS のプロセスではなく、独自の隔離された状態を持つ逐次処理
通信は名前付き バッファ なし チャネル を介して行われる
https://scrapbox.io/files/67c14eacc28304ebcc0f07de.png
from Go言語で学ぶ並行プログラミング 他言語にも適用できる原則とベストプラクティス
Ocaam や Erlang、Clojure の core.async、Akka などに影響を与えた
アクターモデル
Go では ゴルーチン と チャネル を使ってこのモデルを実装している
Go のデフォルトのチャネルは CSP モデル同様 バッファ がないため同期される
ただし、Go では チャネルが 第一級オブジェクト である 点が異なる
従って、チャネルを関数や、他のチャネルに渡すことも可能