UFMG - Pós-graduação em Ciência da
Computação -
Programação Paralela
A seguir: Escalonamento de uma impressora
Acima: Aula 7 - Exercícios
Anterior: Comparação e Troca: Algoritmo
Transações
key mutexA, mutexB;
a = 1; b = 1;
cobegin
T1::
lock(mutexA); a = a + 100;
lock(mutexB); unlock(mutexA);
b = b + 100; unlock(mutexB);
T2::
lock(mutexA); a = a * 2;
lock(mutexB); unlock(mutexA);
b = b * 2; unlock(mutexB);
coend
- Obs.: a técnica utilizada nesta solução é bastante geral,
sendo conhecida como two-phase locking , pois nenhum lock
é adquirido
após o relaxamento de qualquer lock.
- O que aconteceria se tivéssemos T2:: b = b * 2; a = a * 2,
e empregássemos two-phase locking?
Osvaldo Carvalho