繁体   English   中英

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

[英]In Elixir, what's the difference between a node and a process?

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

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

节点模块的价值是什么? 它提供了流程不提供的功能吗?

节点看起来像命名进程。

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

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

根据文档 ,这是Elixir流程的定义:

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

Elixir的进程不应与操作系统进程混淆。 Elixir中的进程在内存和CPU方面极其轻巧(与许多其他编程语言中的线程不同)。

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

活?()

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

连接(节点)

建立与节点的连接

断开连接(节点)

强制断开节点的连接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM