Programação concorrente
Juciele Ap. Soares da Silva
R.A: 09.1.50.02
1Universidade do Estado de Mato Grosso
Departamento de Ciência da Computação
Rua A, S/N. CEP 78390-000
Barra do Bugres/MT
RESUMO
A área de programação concorrente vem sendo explorada há várias décadas, sob vários enfoques. Em muitos desses enfoques o trabalho foi bem sucedido: problemas básicos foram definidos e solucionados, aspectos teóricos caracterizados e estudados, aspectos de implementação largamente experimentados e analisados.
Em geral, o impacto dos resultados obtidos por esses estudos estavam confinados a comunidades específicas, estando o desenvolvedor de sistemas razoavelmente “protegido” dos desafios e problemas da área, a menos que desenvolvesse software básico (sistemas operacionais, gerenciadores de bancos de dados) ou atuasse diretamente em áreas específicas como computação paralela ou sistemas de tempo real.
INTRODUÇÃO
Sistemas concorrentes devem lidar com atividades separadas que estão progredindo ao mesmo tempo. Informalmente, dizemos que duas atividades são concorrentes se em algum momento ambas tenham sido iniciadas, mas não terminadas, ou seja, estão em algum ponto intermediário da execução.
Programação concorrente é a atividade de construir um programa contendo múltiplas atividades que progridem em paralelo. Atividades podem progredir em paralelo de duas maneiras: sendo realmente executadas em paralelo, cada uma de posse de um processador diferente ou tendo o processador se revezando entre as atividades, de forma que cada atividade possa fazer uso do processador durante um período de tempo e depois espere sua próxima chance de avançar na computação.
A programação concorrente lida com atividades que, embora executem separadamente, estejam relacionadas de alguma forma. Em alguns casos, as atividades estão relacionadas por terem um objetivo comum, por estarem cooperando para solucionar um problema. Em outros casos, a relação entre as atividades é mais