在Elixir中,节点和进程之间有什么区别?

时间:2017-02-04 14:47:25

标签: erlang elixir

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

节点看起来像命名过程。它们可以同时执行功能,链接到其他节点,并像流程监控器一样工作。每个模块中的许多功能看起来都是一样的,增强了相似之处。

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

2 个答案:

答案 0 :(得分:6)

  

节点看起来像命名过程。

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

答案 1 :(得分:1)

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

根据documentation

,这是Elixir流程的定义
  

在Elixir中,所有代码都在进程内运行。流程是孤立的   彼此之间并发运行并通过进行通信   消息传递。进程不仅是并发的基础   Elixir,但他们也提供建设分布式和   容错程序。

     

Elixir的流程不应与操作系统流程混淆。 Elixir的工艺非常轻巧   内存和CPU(与许多其他编程语言中的线程不同)。

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

  

<强>活着?()

     

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

     

连接(节点)

     

建立与节点的连接

     

<强>断开(节点)

     

强制断开节点