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

Conteúdo apagado Conteúdo adicionado
Leonardo.stabile (discussão | contribs)
m *cat
Linha 24:
Suponha que <code>balanco = 500</code>, e dois processos concorrentes realizam a chamada <code>saque(300)</code> e <code>saque(350)</code> . Se em ambas as operações a linha 2 é executada antes da linha 3 do processo concorrente, ambas as operações irão deduzir que o balanço é maior que a quantia a ser sacada, e a execução irá proceder subtraido os valores a serem sacados em ambos os processos. Apesar disso, como ambos os processos realizam o saque, o balanço acaba ficando com valor negativo, um resultado que não deveria acontecer. Esses tipos de probemas com recursos compartilhados requerem o uso de controles concorrentes, ou algoritmos não bloqueantes.
 
Como sistemas concorrentes necessitam a utilização de recursos compartilhaodscompartilhados, a programação concorrente geralmente requer o uso de algum método de árbitro, um elemento neutro, para coordenar o acesso a tais recursos. Isso introduz a possibilidade do aparecimento de problemas com decisões não determinísticas, apesar de que o desenvolvimento cuidadoso de árbitros pode reduzir a probabilidade de tais situações aparecerem.
 
==Linguagens para programação concorrente==