我最近一直在研究Elixir和Akka,这让我开始思考:Clojure相当于什么?
agents
...但是那不是相当一样的东西(代理商似乎没有自己的 逻辑,它们是由外部代码“作用于”)Pulsar
纤维(更近一些,但是...仍然存在吗?)(我 am 意识到我可能在“在这里提出错误的问题”,希望这不是太开放了)
答案 0 :(得分:3)
里奇·希基(Rich Hickey)在2008年的演讲“ Clojure Concurrency(Clojure并发性)”中明确区分了行动者和行动者,并提到了彼此不同的几种方式。如果您想快速找到其中一些评论,请在本演讲的笔录中搜索“代理”和“演员”:https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/ClojureConcurrency.md
有关clojure.org的更多内容,请访问代理商和参与者之间的区别:https://clojure.org/about/state#actors
显然,与我比其他人更了解休伊特演员模型的人进行的另一次对话可能有益于阅读:http://www.dalnefre.com/wp/2010/06/actors-in-clojure-why-not/
我的理解是,如果要使用Erlang样式的actor,则基本上需要在线程/进程之间使用不可靠的消息队列。在不同的进程之间,有多种方法来获取不可靠的消息,这不是Clojure内置的,但是都可以通过Java interop获得。