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

Processos do Erlang

A granularidade de concorrência no Erlang é um processo. Os processos são atividades que executam ao mesmo tempo e independentemente de outros processos/Tarefas. Os processos no Erlang são diferentes dos processos e threads comuns conhecidos. Os processos do Erlang são leves, executam-se isolados de outros processos (memória) e são escalonados pelo VM do Erlang. O tempo de criação dos processos é muito curto e a memória ocupada pelos processos recém-criados é muito pequena, um único VM do Erlang pode executar milhões de processos.

A criação de processos no Erlang é feita usando o método spawn. A sintaxe geral é a seguinte.

Sintaxe

spawn(Módulo, Nome, Args)

Parâmetros

  • Módulo −Este é o valor átomo pré-definido, que deve ser ?MODULE.

  • Nome −Este é o nome da função a ser chamada ao definir o processo.

  • Args −Estes são os parâmetros que precisam ser enviados para a função.

Retorno

Retorno do ID do processo criado.

O seguinte programa mostra um exemplo do método 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]).

A respeito do programa mencionado acima, é necessário prestar atenção aos seguintes pontos.

  • Foi definida uma função chamada call, que será usada para criar o processo.

  • O método spawn usa os parâmetros hello e process para chamar a função call.

Resultados de Saída

Quando executamos o programa acima, obteremos o seguinte resultado.

<0.29.0>"hello" "process"

Agora, vamos ver outras funcionalidades disponíveis para o processo.

NúmeroMétodos e Descrições
1

is_pid

Este método é usado para determinar se o pid existe.

2

is_process_alive

É chamado de is_process_alive(Pid). Um Pid deve referenciar um processo em um nó local.

3

pid_to_list

Converte o pid para uma lista.

4

registered

Retorna uma lista com os nomes de todos os processos registrados.

5

self

Um dos BIFs mais usados, retorna o pid do processo chamador.

6

register

Usado para registrar um processo no sistema.

7

whereis

É chamado de whereis (Nome). Retorna o pid do processo registrado com esse nome.

8

unregister

Usado para desregistrar processos no sistema.