【发布时间】:2017-02-04 23:23:20
【问题描述】:
这个问题也被标记为“Erlang”,因为这些 Elixir 模块或多或少只是封装了 Erlang 功能。
节点看起来像命名的进程。它们可以同时执行功能,链接到其他节点,并充当流程监督者。每个模块中的许多功能看起来都是相同的,从而加强了相似性。
Node 模块的价值是什么?它提供了 Process 没有的什么?
【问题讨论】:
这个问题也被标记为“Erlang”,因为这些 Elixir 模块或多或少只是封装了 Erlang 功能。
节点看起来像命名的进程。它们可以同时执行功能,链接到其他节点,并充当流程监督者。每个模块中的许多功能看起来都是相同的,从而加强了相似性。
Node 模块的价值是什么?它提供了 Process 没有的什么?
【问题讨论】:
节点看起来像命名的进程。
您似乎误解了 Node 是什么。节点是 Erlang VM 的一个实例,作为一个操作系统进程运行。 Erlang 进程是一个执行代码的单元,类似于操作系统线程,但更轻。 Erlang 进程在 Erlang 节点上运行,就像操作系统进程在操作系统上运行一样。 Erlang 进程不能在没有 Erlang 节点的情况下运行。
【讨论】:
这是两个截然不同的概念。节点是 Erlang 虚拟机的一个实例,进程是在虚拟机内部运行的非常轻量级的线程。
这里是Elixir进程的定义,根据documentation:
在 Elixir 中,所有代码都在进程内运行。进程是隔离的 彼此并行运行并通过 消息传递。进程不仅是并发的基础 Elixir,但它们也提供了构建分布式和 容错程序。
Elixir 的进程不应与操作系统进程相混淆。 Elixir 中的进程在以下方面非常轻量级 内存和 CPU(与许多其他编程语言中的线程不同)。
节点是 Erlang 虚拟机的表示。以下是node 模块的一些功能示例:
还活着吗?()
如果本地节点处于活动状态,则返回 true
连接(节点)
建立到节点的连接
断开连接(节点)
强制断开节点
【讨论】: