【问题标题】:Message passing model in clojure for concurrencyclojure 中用于并发的消息传递模型
【发布时间】:2014-03-25 18:53:31
【问题描述】:

我想知道是否可以将编程语言 Clojure 用于消息传递并发模型,即两个进程/线程之间没有共享内存区域。

我希望使用 Clojure 有几个原因,即我知道并喜欢 Common Lisp,并且我想要一门函数式编程语言。我对 Clojure 或 Concurrency 不太了解,但是 wikipedia Clojure 通过软件事务内存、代理系统和动态 var 系统实现并发。

  1. Clojure 能否实现消息传递并发模型?
  2. 如果不是,还有哪些其他语言

感谢您的帮助!

【问题讨论】:

    标签: multithreading concurrency clojure programming-languages


    【解决方案1】:

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

    是的,当然。它已经为 Clojure 实现了。检查Pulsar 项目。它看起来非常有前途,并已准备好迎接黄金时段。

    当然,没有什么能阻止您使用Akka.io,因为它是一个 JVM 项目(通过使用 Clojure 的内置 Java 互操作)。但 Pulsar 在创建时考虑了 Clojure。

    还有哪些语言?

    在 Actors 模型方面,Erlang 是无可争议的冠军。

    【讨论】:

    • 将这种模型作为语言特性对语言有什么好处吗?
    • @CodeKingPlusPlus 你是什么意思?你的意思是如果演员模型是作为语言的一部分而不是作为库实现的?
    • 是的,在语言中内置这种特定的并发模型有什么好处吗?
    • 我认为将这个模型内置到语言中与使用库可用之间并没有太大的区别,至少在像 Clojure 这样的语言中没有。看看Pulsar's user manual。设置(与所有/大多数 Clojure 库一样)相对简单,您需要的功能在库中很容易获得。
    • 我认为速度将更多地取决于函数的实现方式,而不是它们是否在 clojure.core 或其他地方。不过,我可能是错的。
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2017-08-27
    • 2015-12-03
    • 2021-04-28
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多