当前位置:  开发笔记 > 编程语言 > 正文

Erlang风格的其他语言并发

如何解决《Erlang风格的其他语言并发》经验,为你挑选了6个好方法。

其他编程语言存在哪些库来提供Erlang风格的并发模型(进程,邮箱,模式匹配接收等)?

注意:我特别感兴趣的是与Erlang类似的东西,而不仅仅是任何线程或排队库.



1> 小智..:

Ulf Wiger最近在这个主题上发表了一篇很棒的文章 - 这里是他在你可以调用"Erlang Style Concurrency"之前定义的属性:

快速创建/销毁流程

能够支持>> 10 000个并发过程,特征基本不变.

快速异步消息传递.

复制消息传递语义(无共享并发).

过程监控.

选择性的消息接收.

上面的第2个是最难在VM和语言实现中支持的,这些实现最初并不是为并发而设计的.这不是要在其他语言中实现Erlang-ish并发实现,但是Erlang的许多价值来自于能够创建数百万个进程,如果进程抽象与操作系统级别具有1-1关系,这非常困难线程或进程.Ulf在上面的链接中有更多关于此的内容.


个进程,如果进程抽象与操作系统级别具有1-1关系,这非常困难线程或进程.Ulf在上面的链接中有更多关于此的内容.

2> Mo...:

Scala支持演员.但我不会故意将scala称为与Erlang类似.

尽管如此scala绝对值得一看!



3> 小智..:

消息传递接口(MPI)(http://www-unix.mcs.anl.gov/mpi/)是一个高度可扩展且强大的并行编程库,适用于C,但现在有多种版本可供使用http:// en .wikipedia.org/wiki/Message_Passing_Interface #Introductions.虽然该库没有引入新的语法,但它提供了一种通信协议来协调可并行化的例程之间的数据共享.

传统上,它用于大型集群计算,而不是单个系统用于并发,尽管多核系统当然可以利用这个库.

另一个解决并行编程问题的有趣解决方案是OpenMP,它试图在各种平台上提供可移植的扩展,以便向编译器提供关于哪些代码段可以轻松并行化的提示.

例如(http://en.wikipedia.org/wiki/OpenMP#Work-sharing_constructs):

#define N 100000
int main(int argc, char *argv[])
{
  int i, a[N];
  #pragma omp parallel for
  for (i=0;i

当然,两者都有优点和缺点,但前者已被证明在学术界和其他重型科学计算应用中非常成功.因人而异.



4> Frank Kruege..:

用于.NET的Microsoft 并发和协调运行时.

CCR适用于将组件分成只能通过消息交互的部分的应用程序模型.此模型中的组件需要在消息之间进行协调,处理复杂的故障情形以及有效处理异步编程的方法.



5> Mo...:

此外花毯是一个Java库,带来二郎风格消息传递/演员Java语言.



6> denis philli..:

Mike Rettig创建了一个名为Retlang的.NET库和一个名为Jetlang的Java端口,其灵感来自Erlang的并发模型.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有