UFMG - Pós-graduação em Ciência da
Computação -
Programação Paralela
A seguir: Quais números este programa
Acima: Atomicidade em Linguagens de
Anterior: Comandos conflitantes
- Espera-se que qualquer conjunto de ações definidas por comandos
não conflitantes seja atômico
- A noção de comandos conflitantes nem sempre é de fácil
aplicação, pois depende do mapeamento de variáveis de alto nível
na memória
- Parâmetros formais são um caso particularmente complicado
- Variáveis locais em C, Pascal ou Java nunca constituem
fonte de conflitos, pois normalmente são alocadas nas pilhas exclusivas
dos processos
- Quando um programa prescreve a execução em paralelo de comandos
conflitantes, diz-se que ele está provocando uma race
condition (um nome tradicional mas infeliz, pois deixa a impressão
de que um programa paralelo cujos resultados dependem das velocidades
relativas dos processos está obrigatoriamente errado)
- Um programa sequencial sintaticamente correto possui uma semântica bem definida, mesmo que não seja aquela que se desejava
- É difícil fazer o mesmo com uma linguagem de alto nível sem perda
de paralelismo: (A[i]++,A[j]-) são conflitantes?
- A garantia de uma semântica bem definida fica aos cuidados do programador!
Osvaldo Carvalho