Erlang - Procesos

La granularidad de la concurrencia en Erlang es un proceso. Un proceso es una actividad / tarea que se ejecuta al mismo tiempo y es independiente de los otros procesos. Estos procesos en Erlang son diferentes a los procesos e hilos con los que la mayoría de la gente está familiarizada. Los procesos de Erlang son livianos, operan en (memoria) aislados de otros procesos y son programados por la Máquina Virtual (VM) de Erlang. El tiempo de creación del proceso es muy bajo, la huella de memoria de un proceso recién generado es muy pequeña y una sola máquina virtual Erlang puede tener millones de procesos en ejecución.

Se crea un proceso con la ayuda del método de generación. La sintaxis general del método se da a continuación.

Sintaxis

spawn(Module, Name, Args)

Parámetros

  • Module - Este es un valor atómico predefinido que debe ser? MÓDULO.

  • Name - Este es el nombre de la función que se llamará cuando se defina el proceso.

  • Args - Estos son los argumentos que deben enviarse a la función.

Valor devuelto

Devuelve el ID de proceso del nuevo proceso creado.

Por ejemplo

En el siguiente programa se muestra un ejemplo del método de generación.

-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]).

Se deben tener en cuenta las siguientes cosas sobre el programa anterior.

  • Se define una función llamada llamada y se utilizará para crear el proceso.

  • El método spawn llama a la función de llamada con los parámetros hello y process.

Salida

Cuando ejecutamos el programa anterior obtendremos el siguiente resultado.

<0.29.0>"hello" "process"

Ahora veamos las otras funciones que están disponibles con los procesos.

No Señor. Métodos y descripción
1

is_pid

Este método se utiliza para determinar si existe una identificación de proceso.

2

is_process_alive

Esto se llama is_process_alive (Pid). Un Pid debe hacer referencia a un proceso en el nodo local.

3

pid_to_list

Convierte una identificación de proceso en una lista.

4

registrado

Devuelve una lista con los nombres de todos los procesos registrados.

5

yo

Uno de los BIF más utilizados, devuelve el pid de los procesos de llamada.

6

Registrarse

Esto se usa para registrar un proceso en el sistema.

7

dónde está

Se llama whereis (Nombre). Devuelve el pid del proceso que está registrado con el nombre.

8

dar de baja

Se utiliza para anular el registro de un proceso en el sistema.