对于其他编程语言,有哪些库可以提供Erlang样式的并发模型(进程,邮箱,模式匹配接收等)?

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

最佳答案

消息传递接口(interface)(MPI)(http://www-unix.mcs.anl.gov/mpi/)是一个高度可扩展且健壮的并行编程库,最初面向C,但现在提供了多种口味http://en.wikipedia.org/wiki/Message_Passing_Interface#Implementations。尽管该库未引入新语法,但它提供了一种通信协议(protocol)来协调可并行化的例程之间的数据共享。

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

并行编程问题的另一个有趣解决方案是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<N;i++)
     a[i]= 2*i;
  return 0;
}

当然,两者都有优点和缺点,但是事实证明前者在学术界和其他繁重的科学计算应用中非常成功。 YMMV。

关于multithreading - 其他语言的Erlang样式并发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22187/

10-17 02:47