English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
spawn(Módulo, Nome, Args)
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 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úmero | Métodos e Descrições |
---|---|
1 | Este método é usado para determinar se o pid existe. |
2 | É chamado de is_process_alive(Pid). Um Pid deve referenciar um processo em um nó local. |
3 | Converte o pid para uma lista. |
4 | Retorna uma lista com os nomes de todos os processos registrados. |
5 | Um dos BIFs mais usados, retorna o pid do processo chamador. |
6 | Usado para registrar um processo no sistema. |
7 | É chamado de whereis (Nome). Retorna o pid do processo registrado com esse nome. |
8 | Usado para desregistrar processos no sistema. |