用于并发编程的 .NET 语言

标签 .net multithreading f# erlang axum

这可能是其他人已经看到的一个问题,但我正在尝试寻找一种专为(或支持)并发编程而设计的语言,该语言可以在 .net 平台上运行。

我一直在 erlang 中进行辅助开发,以了解该语言,并且喜欢建立一个稳定的并发甚至分布式系统是多么容易。它让我使用了 scala,它也有一个使用 actor 的不错的系统,但是 scala.net 目前似乎没有这个功能(当然这是一个并发系统与分布式系统)。我在看的两种 .net 语言是 Axum 和 F#。

这些是我唯一的选择吗?还有其他人吗?而且,如果它们是唯一的选择,那么它们各自的优点/缺点是什么?

最佳答案

Axum 是一个研究项目。一个真正的研究项目,只有来自它的想法最终会出现在产品中。 (与作为整体产品化的 F# 不同。)我什至不确定许可证是否允许使用它来开发生产应用程序。

F# 是一个不错的选择。

Clojure 也可以在 CLI 上运行,也是一个不错的选择。

Scala 的 CLI 端口目前正在复活(实际上是由 Microsoft 提供官方资金),Scala 的 Actor 库(包括内置的和 Akka)都非常好。

关于上面@wmeyer 的评论:Scala 本身没有任何分布式编程的规定。 (Clojure 也没有。)两者通常都依赖于为此目的而存在的无数 Java 框架,例如 Terracotta。然而,Akka 确实有用于分布式编程的远程 Actor,并且 Akka 与内置的 Scala Actor 库在很大程度上与 API 兼容,这允许平滑过渡。

Erlang 会很酷。 Kresten Krab Thorup 目前正在研究 Erjang,这是 JVM 上的 Erlang 实现,他取得了一些非常令人印象深刻的结果:在 HotSpot 上运行,Erjang 的扩展性与 BEAM 相当,有时甚至更好。例如,在具有 10000 个进程的(著名的)进程环基准测试中,Erjang 的启动速度仅比 BEAM 慢一点,但是当您重复运行几次并且 JIT 启动时,它会在大约 3 次运行后超过 BEAM(并且奇怪的是, BEAM 在 4 次运行后开始减速)。

我很确定您可以在 DLR 和 TPL 上构建一个性能同样出色的“#rlang”。

关于用于并发编程的 .NET 语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774365/

相关文章:

c# - 如何实现业务伙伴提供的WSDL?

swift - 如何从 ARScene 线程访问 UITextView?

c# - 一次调用多个 Web 服务

F# 需要重写代码以不需要可变变量

f# - 值或构造函数未定义

c# - 禁用顶级菜单项不会禁用子项,尽管 MSDN 怎么说?

c# - AES 解密异常更改

C# TCP 聊天应用线程

function - F#:如何定义一个函数来将 2 个 float 相加?在函数签名中指定 "Float"?

c# - 我应该在单例上实现 IDisposable 吗?