【问题标题】:In Elixir, what's the difference between a node and a process?在 Elixir 中,节点和进程有什么区别?
【发布时间】:2017-02-04 23:23:20
【问题描述】:

这个问题也被标记为“Erlang”,因为这些 Elixir 模块或多或少只是封装了 Erlang 功能。

节点看起来像命名的进程。它们可以同时执行功能,链接到其他节点,并充当流程监督者。每个模块中的许多功能看起来都是相同的,从而加强了相似性。

Node 模块的价值是什么?它提供了 Process 没有的什么?

【问题讨论】:

    标签: erlang elixir


    【解决方案1】:

    节点看起来像命名的进程。

    您似乎误解了 Node 是什么。节点是 Erlang VM 的一个实例,作为一个操作系统进程运行。 Erlang 进程是一个执行代码的单元,类似于操作系统线程,但更轻。 Erlang 进程在 Erlang 节点上运行,就像操作系统进程在操作系统上运行一样。 Erlang 进程不能在没有 Erlang 节点的情况下运行。

    【讨论】:

    • 是的,我没听懂。谢谢你。我曾假设要相互交谈,他们需要在同一个虚拟机上。现在我需要弄清楚为什么不同的实例可以相互通信,以及如何通信。
    【解决方案2】:

    这是两个截然不同的概念。节点是 Erlang 虚拟机的一个实例,进程是在虚拟机内部运行的非常轻量级的线程。

    这里是Elixir进程的定义,根据documentation

    在 Elixir 中,所有代码都在进程内运行。进程是隔离的 彼此并行运行并通过 消息传递。进程不仅是并发的基础 Elixir,但它们也提供了构建分布式和 容错程序。

    Elixir 的进程不应与操作系统进程相混淆。 Elixir 中的进程在以下方面非常轻量级 内存和 CPU(与许多其他编程语言中的线程不同)。

    节点是 Erlang 虚拟机的表示。以下是node 模块的一些功能示例:

    还活着吗?()

    如果本地节点处于活动状态,则返回 true

    连接(节点)

    建立到节点的连接

    断开连接(节点)

    强制断开节点

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      相关资源
      最近更新 更多