eventos
topico
nomeParalelismo
tituloParalelismo
descritorParalelismo
leadIdentificar a concorrencia (conjunto de programas sequenciais compartihados) em um problema
link~link~
origemParalelismo.xml
referencia~referencia~
topico
tituloReal ou aparente
descReal:
  • Um processador fisico para cada programa

Aparente

  • Um processador fisico alternando entre programas


topico
tituloExemplo
desc
topico
tituloCriação de programa
descCriaçã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 
topico
tituloExemplo criação programa concorrente
desc
  • 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
topico
tituloComunicação entre programas
descEm 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
topico
tituloExemplo de comunicação entre programas
descPara 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.