2017-02-04 90 views
1

此問題被標記爲「Erlang」,因爲這些Elixir模塊或多或少只是包裝Erlang功能。在Elixir中,節點和進程之間有什麼區別?

節點看起來像命名進程。他們可以同時執行功能,鏈接到其他節點,並像流程主管一樣行事。每個模塊中的許多功能看起來都是一樣的,增強了相似之處。

節點模塊的價值是什麼?它提供的流程不是什麼?

回答

6

節點看起來像命名進程。

看來你誤解了一個節點是什麼。 Node是Erlang VM的一個實例,作爲一個操作系統進程運行。 Erlang進程是執行代碼的單元,類似於操作系統線程,但更輕。 Erlang進程在Erlang節點上運行,就像在操作系統上運行的操作系統進程一樣。沒有Erlang節點,Erlang進程無法運行。

+0

沒錯的斷線,我沒聽清楚。謝謝。我曾假設要互相交談,他們需要在同一個虛擬機上。現在我需要弄清楚爲什麼不同的實例可以相互交流,以及如何進行交流。 – steel

1

這是兩個截然不同的概念。節點是Erlang虛擬機的實例,進程是在虛擬機內運行的非常輕量級的線程。

下面是一個藥劑處理的定義,根據documentation

在藥劑,所有代碼運行內部過程。進程彼此隔離,並行運行,並通過消息傳遞進行通信。進程不僅是 Elixir的併發基礎,而且還提供了構建分佈式和容錯程序的方法。

Elixir的進程不應與操作系統進程混淆。 Elixir中的進程在內存和CPU方面非常輕量級(與其他許多編程語言中的線程不同)。

並且一個節點是Erlang虛擬機的表示。這裏的node模塊的功能的一些例子:

活着()

返回true,如果本地節點是活着

連接(節點)

建立?到節點的連接

disconnectc T(節點)

強制節點

相關問題