首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang的并发模型到底是什么?

Erlang的并发模型到底是什么?
EN

Stack Overflow用户
提问于 2010-04-25 17:47:33
回答 2查看 1.8K关注 0票数 4

我最近读了一篇论文,Why Events are Bad。本文对基于事件的高并发服务器和基于线程的高并发服务器进行了比较研究,最后得出结论,在这种情况下,线程比事件更好。

我发现我无法对erlang公开的并发模型进行分类。Erlang提供轻量级进程,但这些进程大部分时间都会挂起,直到它接收到某种事件/消息。

/Arun

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-26 21:09:35

Erlang并发模型基于以下前提:

  • Lightweight concurrency。您应该能够高效地创建应用程序所需的任意多个进程,并且应该能够在必要时高效地创建和删除它们。这意味着进程很轻很小,不需要使用进程池来节省time.
  • Asynchronous通信。所有的进程通信都是通过异步消息传递的,仅此而已,没有别的了,nada.
  • Error处理。与轻量级并发和异步消息是构建并发系统的基础一样,错误处理也是构建健壮系统的基础。它的原语与并发性交互,是Erlang concurrency model.
  • Process isolation的一部分。进程之间根本没有共享状态,通信的唯一方式是通过消息传递。这是构建健壮系统的基础,因为它允许进程崩溃,而不会破坏其他进程。当然,它们可能会通过错误处理机制接收到进程崩溃的信息,但崩溃绝不会在其他进程中产生不一致的状态。由此推论就是没有全局数据。

这些是Erlang并发模型的基本前提。你可能经常看到它们以不同的方式表达,但它们基本上是相同的。Erlang也有不可变的数据,这是一个很大的胜利,但这并不是并发模型的一部分,消息传递和进程隔离就足够了。在某些圈子里,这可能被认为是异端观点。

正如您所看到的,Actor只是模型的一部分。错误处理是基本的,但经常被忽视。忽略它意味着你错过了部分要点。

注: Erlang进程是适当的进程/线程,因为它们有自己的生命周期,而不仅仅是事件驱动协程的一种形式。流程可以愉快地执行其业务并更改其内部状态,而不受外部事件的驱动。

票数 15
EN

Stack Overflow用户

发布于 2010-04-25 17:55:46

我猜它叫Actor model

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2707791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档