Programação concorrente: diferenças entre revisões

recat+format
(recat+format)
'''Programação concorrente''' é o [[paradigma de programação]] para a construção de programas para a execução concorrente (simultânea) de várias tarefas computacionais interativas, que podem ser implementadas como programas separados ou como um conjunto de [[Thread|processos]] (''threads'') criadas por um único programa. Essas tarefas também podem ser executadas por um único processador, vários processadores em um único equipamento ou processadores distibuídos por uma rede. Programação concorrente é relacionada com [[programação paralela]], mas foca mais na interação entre as tarefas. A interação e a comunicação correta entre as diferentes tarefas, além da coordenação do acesso concorrente aos recurso computacionais são as principais questões discutidas durante o desenvolvimento de sistemas concorrentes. Pioneiros na área de programação concorrente incluem [[Edsger Dijkstra]], [[Per Brinch Hansen]], e [[C. A. R. Hoare]].
 
==Interação e comunicação concorrente==
Em alguns sistemas computacionais concorrentes, a comunicação entre os componentes é escondida do programador, enquanto em outros a comunicação deve ser lidada explicitamente. A comunicação explícita pode ser dividida em duas classes:
 
=== Comunicação por memória compartilhada ===
; Comunicação por [[memória compartilhada]]: componentesComponentes concorrentes comunicam-se ao alterar o conteúdo de áreas de memória compartilhadas. [[Java (linguagem de programação)|Java]] e [[C sharp|C#]] são linguagens que utilizam tal modelo. Esse estilo de programação geralmente requer o desenvolvimento de alguns métodos de trava como [[mutex]], semáforo ou monitor para gerenciar a utilização da memória entre as tarefas.
 
=== Comunicação por troca de mensagens ===
; Comunicação por troca de mensagens: componentesComponentes concorrentes comunicam-se ao trocar mensagens. Erlang e Occam são linguagens que utilizam tal modelo. A troca de mensagens pode ser lidada assincronamente (também denominada como "enviar e rezar", apesar da prática padrão ser reenviar mensagens que não são sinalizadas como recebidas) ou pelo método ''rendezvous'', no qual o emissor é bloqueado até que a mensagem seja recebida.
 
A comunicação por mensagens tende a ser mais simples que a comunicação por memória compartilhada, e é considerada como uma forma mis robusta de programação concorrente. Um ampla variedade de teorias matemáticas estão disponíveis para o entendimento e análise de sistemas de comunicação por envio de mensagem, incluindo o modelo de Ator.
Várias outras linguagens oferecem o suporte à concorrência através de bibliotecas, como por exemplo [[Linguagem de programação C|C]] e [[C++]].
 
[[Categoria:ProgramaçãoParadigmas de programação]]
 
[[en:Concurrent computing]]
78 149

edições