Erlang - 程序



Erlang 中併發的粒度是一個程序。程序是一個活動/任務,它與其他程序併發執行並且相互獨立。Erlang 中的程序與大多數人熟悉的程序和執行緒不同。Erlang 程序是輕量級的,在(記憶體)中與其他程序隔離執行,並由 Erlang 的虛擬機器 (VM) 排程。程序的建立時間非常短,剛剛生成的程序的記憶體佔用非常小,單個 Erlang VM 可以執行數百萬個程序。

程序是藉助 `spawn` 方法建立的。該方法的通用語法如下所示。

語法

spawn(Module, Name, Args)

引數

  • 模組 − 這是一個預定義的原子值,必須為 `?MODULE`。

  • 名稱 − 這是在定義程序時要呼叫的函式的名稱。

  • 引數 − 這些是要傳送到函式的引數。

返回值

返回新建立程序的程序 ID。

例如

以下是 `spawn` 方法的一個示例程式。

-module(helloworld). 
-export([start/0, call/2]). 

call(Arg1, Arg2) -> 
   io:format("~p ~p~n", [Arg1, Arg2]). 
start() -> 
   Pid = spawn(?MODULE, call, ["hello", "process"]), 
   io:fwrite("~p",[Pid]).

關於上述程式,需要注意以下幾點。

  • 定義了一個名為 `call` 的函式,並將用於建立程序。

  • `spawn` 方法使用引數 `hello` 和 `process` 呼叫 `call` 函式。

輸出

執行上述程式後,我們將得到以下結果。

<0.29.0>"hello" "process"

現在讓我們來看看程序的其他可用函式。

序號 方法和描述
1

is_pid

此方法用於確定程序 ID 是否存在。

2

is_process_alive

這稱為 `is_process_alive(Pid)`。Pid 必須引用本地節點上的程序。

3

pid_to_list

它將程序 ID 轉換為列表。

4

registered

返回所有已註冊程序名稱的列表。

5

self

最常用的 BIF 之一,返回呼叫程序的 pid。

6

register

這用於在系統中註冊程序。

7

whereis

這稱為 `whereis(Name)`。返回使用該名稱註冊的程序的 pid。

8

unregister

這用於在系統中登出程序。

廣告
© . All rights reserved.