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

is_pid

Questo metodo viene utilizzato per determinare se esiste un ID processo.

2

is_process_alive

Questo è chiamato is_process_alive (Pid). Un Pid deve fare riferimento a un processo nel nodo locale.

3

pid_to_list

Converte un ID di processo in un elenco.

4

registrato

Restituisce un elenco con i nomi di tutti i processi registrati.

5

se stesso

Uno dei BIF più comunemente usati, restituisce il pid dei processi chiamanti.

6

Registrati

Viene utilizzato per registrare un processo nel sistema.

7

dove si trova

È chiamato come whereis (Nome). Restituisce il pid del processo registrato con il nome.

8

annullare la registrazione

Viene utilizzato per annullare la registrazione di un processo nel sistema.