Erlang - Processi
La granularità della concorrenza in Erlang è un processo. Un processo è un'attività / attività che viene eseguita contemporaneamente ed è indipendente dagli altri processi. Questi processi in Erlang sono diversi dai processi e dai thread con cui la maggior parte delle persone ha familiarità. I processi di Erlang sono leggeri, operano in isolamento (della memoria) da altri processi e sono programmati dalla macchina virtuale (VM) di Erlang. Il tempo di creazione del processo è molto basso, l'impronta di memoria di un processo appena generato è molto ridotta e una singola VM Erlang può avere milioni di processi in esecuzione.
Viene creato un processo con l'aiuto del metodo spawn. Di seguito viene fornita la sintassi generale del metodo.
Sintassi
spawn(Module, Name, Args)
Parametri
Module - Questo è un valore atom predefinito che deve essere? MODULO.
Name - Questo è il nome della funzione da chiamare quando il processo è definito.
Args - Questi sono gli argomenti che devono essere inviati alla funzione.
Valore di ritorno
Restituisce l'ID di processo del nuovo processo creato.
Per esempio
Un esempio del metodo spawn è mostrato nel seguente programma.
-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]).
Le seguenti cose devono essere annotate sul programma di cui sopra.
Una funzione chiamata call viene definita e verrà utilizzata per creare il processo.
Il metodo spawn chiama la funzione call con i parametri hello e process.
Produzione
Quando eseguiamo il programma sopra, otterremo il seguente risultato.
<0.29.0>"hello" "process"
Ora diamo un'occhiata alle altre funzioni disponibili con i processi.
Sr.No. | Metodi e descrizione |
---|---|
1 | Questo metodo viene utilizzato per determinare se esiste un ID processo. |
2 | Questo è chiamato is_process_alive (Pid). Un Pid deve fare riferimento a un processo nel nodo locale. |
3 | Converte un ID di processo in un elenco. |
4 | Restituisce un elenco con i nomi di tutti i processi registrati. |
5 | Uno dei BIF più comunemente usati, restituisce il pid dei processi chiamanti. |
6 | Viene utilizzato per registrare un processo nel sistema. |
7 | È chiamato come whereis (Nome). Restituisce il pid del processo registrato con il nome. |
8 | Viene utilizzato per annullare la registrazione di un processo nel sistema. |