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 | Este método se utiliza para determinar si existe una identificación de proceso. |
2 | Esto se llama is_process_alive (Pid). Un Pid debe hacer referencia a un proceso en el nodo local. |
3 | Convierte una identificación de proceso en una lista. |
4 | Devuelve una lista con los nombres de todos los procesos registrados. |
5 | Uno de los BIF más utilizados, devuelve el pid de los procesos de llamada. |
6 | Esto se usa para registrar un proceso en el sistema. |
7 | Se llama whereis (Nombre). Devuelve el pid del proceso que está registrado con el nombre. |
8 | Se utiliza para anular el registro de un proceso en el sistema. |