どちらも、並行するエンティティがロックの代わりにメッセージで通信することで、共有された可変状態を避けます。actorはプライベートな状態を所有し、宛先を指定したメッセージを送ります。CSPは匿名のプロセスがchannelを通じて値を受け渡します。 「メモリを共有して通信するな。通信してメモリを共有せよ」。
actorモデル(Erlang、Akka)
各actorはプライベートなメールボックスを持ち、メッセージを一度に1つずつ処理します。actorには名前/アドレスがあり、非同期に(fire-and-forgetで)送信し、状態を決して共有しません。そのためactorの内部にロックは不要です。監視ツリー(supervision tree)がクラッシュしたactorを再起動します。
text
Actor A ──send msg──▶ [mailbox] Actor B (B processes serially, own state)
CSP(Go、occam)
プロセスは匿名で、を通じて通信します。send/receiveのランデブー(バッファなしのchannelは両者が準備できるまでブロックする)が同期を提供します。名前を持つエンティティはプロセスではなくchannelです。
