gpt4 book ai didi

multithreading - Erlang 的并发模型究竟是什么?

转载 作者:行者123 更新时间:2023-12-01 06:55:50 25 4
gpt4 key购买 nike

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

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

/阿伦

最佳答案

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

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

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

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

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

    关于multithreading - Erlang 的并发模型究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707791/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com