【发布时间】:2010-09-12 09:49:05
【问题描述】:
CPU 架构格局发生了变化,多核是一种趋势,它将改变我们开发软件的方式。我用 C、C++ 和 Java 做过多线程开发,我用各种 IPC 机制做过多进程开发。对于开发人员来说,使用线程的传统方法似乎并不容易使用支持高度并发的硬件。
您知道哪些语言、库和开发技术有助于缓解创建并发应用程序的传统挑战?我显然在考虑死锁和竞争条件等问题。设计技术、库、工具等也很有趣,它们有助于实际利用并确保可用资源得到利用——仅仅编写一个安全、强大的线程应用程序并不能确保它使用所有可用的内核。
到目前为止我看到的是:
- Erlang:基于进程,消息传递 IPC,'actor 的并发模型
- Dramatis:用于 Ruby 和 Python 的演员模型库
- Scala:用于 JVM 的函数式编程语言,增加了一些并发支持
- Clojure:用于 JVM 的函数式编程语言,带有演员库
- Termite: Erlang 进程方法和消息传递给 Scheme 的端口
您还知道哪些内容,哪些内容对您有用,您认为哪些内容值得一看?
【问题讨论】:
-
您将并发性和并行性混为一谈。
-
我认为说 Clojure 有一个“演员库”有点不准确——事实上,整个语言都是围绕并发和不变性设计的。值得一看 infoq.com/presentations/Value-Identity-State-Rich-Hickey 以了解更多哲学。
-
+1 mikera....Clojure 支持代理,而不是演员。使用 Actor,您可以将数据发送到一个实体,以告诉该实体对其他一些数据进行变异。使用代理,您可以向实体发送函数以改变该实体的状态。
标签: programming-languages concurrency functional-programming multicore