Clojure 相当于 "Actors"
Clojure equivalent of "Actors"
我最近一直在研究 Elixir 和 Akka,这让我开始思考:Clojure 中的等效项是什么?
- 我发现了一些 "message throughput comparison" 关于特工 vs 演员的帖子,但它们是 8 年前的
- 一个答案曾经是
agents
...但这完全不是一回事(代理不似乎有他们的 自己的 逻辑,他们是 "acted upon" 通过外部代码)
- 另一个最近的答案是
Pulsar
fibres(更接近,但是......仍然保持不变吗?)
(我 是 意识到我可能 "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 互操作获得。
我最近一直在研究 Elixir 和 Akka,这让我开始思考:Clojure 中的等效项是什么?
- 我发现了一些 "message throughput comparison" 关于特工 vs 演员的帖子,但它们是 8 年前的
- 一个答案曾经是
agents
...但这完全不是一回事(代理不似乎有他们的 自己的 逻辑,他们是 "acted upon" 通过外部代码) - 另一个最近的答案是
Pulsar
fibres(更接近,但是......仍然保持不变吗?)
(我 是 意识到我可能 "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 互操作获得。