Clojure 相当于 "Actors"

Clojure equivalent of "Actors"

我最近一直在研究 Elixir 和 Akka,这让我开始思考:Clojure 中的等效项是什么?

(我 意识到我可能 "asking the wrong question here",希望这不是太开放式)

Rich Hickey 在他 2008 年的演讲中 "Clojure Concurrency" 明确区分了代理人和演员,并提到了他们彼此不同的几种方式。如果您想快速找到其中一些评论,请在本次演讲的文字记录中搜索 "agent" 和 "actor":https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/ClojureConcurrency.md

更多关于 clojure.org 代理人和演员之间的区别:https://clojure.org/about/state#actors

另一位比我更了解原始 Hewitt actor 模型的人的另一段对话可能对阅读有用:http://www.dalnefre.com/wp/2010/06/actors-in-clojure-why-not/

我的理解是,如果你想要 Erlang 风格的 actors,你基本上需要 threads/processes 之间的不可靠消息队列。在不同的进程之间,有许多方法可以获得不可靠的消息传递,none 内置于 Clojure 中,但都可以通过 Java 互操作获得。