Clojure中的消息传递模型用于并发

3
我想了解一下,是否可以使用编程语言Clojure实现消息传递并发模型,即两个进程/线程之间没有共享内存区域。
我希望使用Clojure的原因有几个,主要是我熟悉并喜欢Common Lisp,并且我想使用一种函数式编程语言。我对Clojure和并发性都不太了解,但从wikipedia得知,Clojure通过软件事务内存、代理系统和动态变量系统来实现并发。
  1. 能否使用Clojure实现消息传递并发模型?
  2. 如果不能,还有哪些语言可以实现?
感谢您的帮助!
1个回答

5

能否使用Clojure实现消息传递并发模型?

当然可以。Clojure已经实现了这一功能。请查看Pulsar项目。它看起来非常有前途,准备好进入主流市场。

当然,您也可以使用Akka.io,因为它是一个JVM项目(通过使用Clojure内置的Java互操作性)。但Pulsar是专为Clojure而创建的。

还有其他语言吗?

当涉及到Actor模型时,Erlang是无可争议的冠军。


语言是否具有此模型作为语言特性的优势? - CodeKingPlusPlus
@CodeKingPlusPlus 你的意思是什么?你是说如果演员模型作为语言的一部分而不是作为库来实现? - Chiron
是的,将这种特定的并发模型内置到语言中是否有任何好处? - CodeKingPlusPlus
我认为在像Clojure这样的语言中,将此模型内置于语言中与使用库可用性之间实际上没有太大区别。请查看Pulsar用户手册。设置(与所有/大多数Clojure库一样)相对简单,然后您需要的函数就可以在库中轻松获得。 - Dave Yarwood
我认为速度更多取决于函数实现方式,而不是它们是在clojure.core还是其他位置。不过,我的看法可能有误。 - Dave Yarwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接