Primitivas Básicas de Sincronização (cont.)
Instrução test-and-set: test-and-set(m)
- Lê mem(m) e faz mem(m)=1, atomicamente
- Retorna valor anteriormente armazenado em mem(m)
Implementação de lock(m):
lock: R1 = test-and-set(m)
Após seção crítica: unlock(m)
Utilização (código de cada processador):
<seção crítica> // apenas um processador de cada vez