Real ou aparente
Real:
- Um processador fisico para cada programa
Aparente
- Um processador fisico alternando entre programas
Exemplo
Criação de programa
Criação de programa
- função spawn/3 -
Pid = spawn(Modulo, Nome da Função, Lista de Argumentos)
Pid (identificador de programa) é retornado imediatamente após a
criação do programa concorrente sem esperar pela avaliação da
função
Exemplo criação programa concorrente

- 1> Pid1 = spawn( math2, factorial, [5] ). %um programa é criado na variável Pid1 usando
a função spawn. Essa função recebe como parâmetro
o módulo
math2,a função factorial e a lista [5].
<0.46.0> - 2> Pid2 = spawn( math2, factorial, [0] ). %As variáveis Pid1 e Pid2 recebem o identificador dos
programas criados.
<0.51.0> - 3>
b().
%Visualiza os programas criados
Pid1 = <0.46.0>
Pid2 = <0.51.0>
ok
Comunicação entre programas
Em Erlang, a única forma de comunicação entre os programas é por passagem de mensagem.
A mensagem é enviada para outro programa pela primitiva “!” (send).
PID ! Mensagem
Pid é o identificador de programa na qual a mensagem é enviada.
A mensagem pode ser qualquer termo válido em Erlang.
Em Erlang, a passagem de mensagens é gerenciada por uma máquina virtual, sem a interrupção do sistema operacional
Exemplo de comunicação entre programas
Para enviar uma mensagem para um programa específico devese primeiramente conhecer o Pid, ou seja, o identificador
do programa ao qual a mensagem será enviada.
Pid ! { Pid2, ‘hello!’}
Considere o seguinte exemplo no Erlang Shell:

- 1> Pid1 = spawn( math2, factorial, [5] ).
<0.46.0> - 2> Pid2 = spawn( math2, factorial, [0] ).
<0.51.0> - 3> Pid1 ! {Pid2,’Recebe oi de Pid1’}.
{<0.51.0>,’Recebe oi de Pid1’} - 4> Pid2 ! {Pid1,’Recebe oi tambem’}.
{<0.46.0>,’Recebe oi tambem’}
Em
Erlang os processos se comunicam pelo mecanismo de passagem de mensagem
assíncrona, ou seja, o programa envia a mensagem e não espera que o
outro processo a receba. Caso o destinatário da mensagem não esteja
mais ativo, nenhuma mensagem de erro será apresentada.