English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

进程 Erlang

La granularità della concorrenza in Erlang è un processo. Un processo è un'attività/task che esegue contemporaneamente con altri processi e indipendentemente da essi. Questi processi in Erlang sono diversi dai processi e thread con cui la maggior parte delle persone è familiare. I processi Erlang sono leggeri, eseguono in isolamento rispetto agli altri processi (memoria) e sono schedulati dal virtual machine (VM) di Erlang. La creazione dei processi è molto rapida e la memoria utilizzata dai processi appena creati è molto piccola, un singolo Erlang VM può eseguire milioni di processi.

Con il metodo spawn viene creato un processo. La sintassi generale di questo metodo è la seguente.

Sintassi

spawn(Module, Name, Args)

Parametri

  • Module −Questo è un valore atomo predefinito, deve essere ?MODULE.

  • Name −Questo è il nome della funzione da chiamare per definire il processo.

  • Args −Questi sono i parametri da inviare alla funzione.

Valore di ritorno

Restituisce l'ID del processo creato.

Il seguente programma mostra un esempio di 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]).

Riguardo al programma menzionato sopra, è necessario notare i seguenti punti.

  • Definì una funzione chiamata call, che verrà utilizzata per creare un processo.

  • 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

已注册

返回包含所有已注册进程的名称的列表。

5

self

最常用的 BIF 之一,返回调用进程的 pid。

6

注册

用于在系统中注册一个进程。

7

whereis

它被称为 whereis (Name)。返回用该名称注册的进程的 pid。

8

注销

用于注销系统中的进程。