- Erlang 教程
- Erlang - 首頁
- Erlang - 概述
- Erlang - 環境
- Erlang - 基本語法
- Erlang - Shell
- Erlang - 資料型別
- Erlang - 變數
- Erlang - 運算子
- Erlang - 迴圈
- Erlang - 決策
- Erlang - 函式
- Erlang - 模組
- Erlang - 遞迴
- Erlang - 數字
- Erlang - 字串
- Erlang - 列表
- Erlang - 檔案I/O
- Erlang - 原子
- Erlang - 對映
- Erlang - 元組
- Erlang - 記錄
- Erlang - 異常
- Erlang - 宏
- Erlang - 標頭檔案
- Erlang - 預處理器
- Erlang - 模式匹配
- Erlang - 保護條件
- Erlang - BIFs
- Erlang - 二進位制
- Erlang - 函式 (Funs)
- Erlang - 程序
- Erlang - 郵件
- Erlang - 資料庫
- Erlang - 埠
- Erlang - 分散式程式設計
- Erlang - OTP
- Erlang - 併發
- Erlang - 效能
- Erlang - 驅動程式
- Erlang - Web程式設計
- Erlang 有用資源
- Erlang - 快速指南
- Erlang - 有用資源
- Erlang - 討論
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 |
此方法用於確定程序 ID 是否存在。 |
| 2 |
這稱為 `is_process_alive(Pid)`。Pid 必須引用本地節點上的程序。 |
| 3 |
它將程序 ID 轉換為列表。 |
| 4 |
返回所有已註冊程序名稱的列表。 |
| 5 |
最常用的 BIF 之一,返回呼叫程序的 pid。 |
| 6 |
這用於在系統中註冊程序。 |
| 7 |
這稱為 `whereis(Name)`。返回使用該名稱註冊的程序的 pid。 |
| 8 |
這用於在系統中登出程序。 |
廣告