2. Programação ConcorrenteProgramação Concorrente
A construção e execuçãoA construção e execução
concorrente, podem serconcorrente, podem ser
implementadas como programasimplementadas como programas
separados ou um conjunto de thread.separados ou um conjunto de thread.
Podem ser executadas por um únicoPodem ser executadas por um único
processador, vários processadoresprocessador, vários processadores
em um único equipamento, ouem um único equipamento, ou
processadores distribuídos.processadores distribuídos.
4. Programação ConcorrenteProgramação Concorrente
Interação e comunicação concorrenteInteração e comunicação concorrente
Comunicação por memóriaComunicação por memória
compartilhada;compartilhada;
Comunicação por troca deComunicação por troca de
mensagens.mensagens.
5. Programação ConcorrenteProgramação Concorrente
Comunicação por memóriaComunicação por memória
compartilhadacompartilhada
Componentes concorrentesComponentes concorrentes
comunicam-se ao alterar o conteúdocomunicam-se ao alterar o conteúdo
de áreas de memóriade áreas de memória
compartilhadas.compartilhadas.
6. Programação ConcorrenteProgramação Concorrente
Java e C# utilizam tal modelo.Java e C# utilizam tal modelo.
Requer alguns métodos de trava:Requer alguns métodos de trava:
• Mutex,Mutex,
• Semáforo ouSemáforo ou
• Monitor.Monitor.
7. Programação ConcorrenteProgramação Concorrente
Comunicação por troca deComunicação por troca de
mensagensmensagens
Erlang e Occam utilizam tal modelo.Erlang e Occam utilizam tal modelo.
Mais simples que a comunicação porMais simples que a comunicação por
memória compartilhada.memória compartilhada.
Forma mais robusta de programaçãoForma mais robusta de programação
concorrente.concorrente.
8. Programação ConcorrenteProgramação Concorrente
Linguagens para programaçãoLinguagens para programação
concorrenteconcorrente
Atualmente, as linguagens maisAtualmente, as linguagens mais
utilizadas são Java e C#. Utilizam outilizadas são Java e C#. Utilizam o
modelo de memória compartilhada,modelo de memória compartilhada,
com bloqueio fornecido porcom bloqueio fornecido por
monitores.monitores.
9. Programação ConcorrenteProgramação Concorrente
Desde a década de 1980, asDesde a década de 1980, as
linguagens Erlang, Limbo e Occam,linguagens Erlang, Limbo e Occam,
tiveram uso industrial.tiveram uso industrial.
10. Programação ConcorrenteProgramação Concorrente
Linguagem de Programação LimboLinguagem de Programação Limbo
Desenvolvida pela LucentDesenvolvida pela Lucent
Technologies Inc.Technologies Inc.
Roda em cima de uma máquinaRoda em cima de uma máquina
virtual, mas não é orientada avirtual, mas não é orientada a
objetos.objetos.
11. Programação ConcorrenteProgramação Concorrente
Código LimboCódigo Limbo
hello.b)hello.b)
implement Hello;implement Hello;
include "sys.m"; //biblioteca da linguagem Limboinclude "sys.m"; //biblioteca da linguagem Limbo
sys: Sys;sys: Sys;
include "draw.m";include "draw.m";
Hello: moduleHello: module
{{
init:init: fn(ctxt: ref Draw->Context, argv: list of string);fn(ctxt: ref Draw->Context, argv: list of string);
};};
init(ctxt: ref Draw->Context, argv: list of string)init(ctxt: ref Draw->Context, argv: list of string)
{{
sys = load Sys Sys->PATH;sys = load Sys Sys->PATH;
sys->print("hello, worldn");sys->print("hello, worldn");
}}
12. Programação ConcorrenteProgramação Concorrente
Linguagem de Programação OccamLinguagem de Programação Occam
Linguagem para aplicações científicasLinguagem para aplicações científicas
e de engenhariae de engenharia
A comunicação é feita através de umA comunicação é feita através de um
construtor especial da linguagemconstrutor especial da linguagem
chamado canal.chamado canal.
14. Programação ConcorrenteProgramação Concorrente
Linguagem de Programação ErlangLinguagem de Programação Erlang
Linguagem de programaçãoLinguagem de programação
declarativa, para programaçãodeclarativa, para programação
paralela e distribuída.paralela e distribuída.
Tira o máximo proveito deTira o máximo proveito de
paralelismo com processadores.paralelismo com processadores.