Concorrência (ciência da computação)

Origem: Wikipédia, a enciclopédia livre.
(Redirecionado de Concorrência (informática))

Em ciência da computação, a concorrência ocorre quando existem dois ou mais processos executados em simultâneo; mais especificamente, o termo é utilizado quando processos disputam o acesso a recursos partilhados. Com efeito, a gestão da concorrência entre processos é a fonte de inúmeras dificuldades no desenvolvimento de software; o acesso descoordenado a um recurso (a chamada condição de corrida) induz no sistema um comportamento imprevisível.

O exemplo típico: a grande maioria dos sistemas utiliza interrupções do fluxo normal de um programa para poder realizar operações em tempo real, ou para gerir o ambiente multitarefa. Assim, enquanto um processo está a aceder a um recurso — cujo valor se traduz, por exemplo, para o número de acessos — para, por exemplo, incrementar o seu valor (que se traduz numa leitura do valor, uma soma, e uma escrita no novo valor), ao mesmo tempo que outro, para o mesmo efeito, pode ocorrer que, algures entre a leitura e a escrita do valor, o escalonador de processos interrompe o primeiro processo para permitir ao segundo uma fatia do poder computacional. Então teríamos que:

Recurso: valor 0
Processo1: lê valor=0
Processo1: incrementa valor = valor + 1
Processo2: lê valor=0
Processo2: incrementa valor = valor + 1
Processo2: escreve valor=1
Recurso: valor 1
Processo1: escreve valor=1
Recurso: valor 1

Na verdade, o valor que devia constar no recurso era 2, e não 1.

Ver também[editar | editar código-fonte]