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

Conteúdo apagado Conteúdo adicionado
Concorrência não é sinônimo de paralelismo.
Olisimoes (discussão | contribs)
m concorrente ou simultâneo
Linha 1:
{{Sem-fontes|data=outubro de 2013}}
'''Programação concorrente''' ou '''programação simultânea''' é um [[paradigma de programação]] para a construção de [[programas de computador]] que fazem uso da execução concorrentesimultânea de várias tarefas computacionais interativas, que podem ser implementadas como programas separados ou como um conjunto de ''[[thread (ciência da computação)|threads]]'' criadas por um único programa. Essas tarefas podem ser executadas por um único [[processador]], [[Multicore|vários processadores em um único equipamento]] ou [[computação distribuída|processadores distribuí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 concorrentesimultâneo aos recursos computacionais são as principais questões discutidas durante o desenvolvimento de sistemas concorrentessimultâneos. Pioneiros na área de pesquisa incluem [[Edsger Dijkstra]], [[Per Brinch Hansen]], e [[C.A.R. Hoare]].
 
Vantagens do paradigma incluem o aumento de desempenho, pois aumenta-se a quantidade de tarefas sendo executadas em determinado período de tempo, e a possibilidade de uma melhor modelagem de programas, pois determinados problemas computacionais são concorrentessimultâneos por natureza.
 
== Interação e comunicação concorrente ==
Em alguns sistemas computacionais concorrentessimultâneos, a comunicação entre os componentes é escondida do programador, enquanto em outros a comunicação deve ser lida explicitamente. A comunicação explícita pode ser dividida em duas classes: por memória compartilhada ou por troca de mensagens.
 
=== Comunicação por memória compartilhada ===