Go backward to Semáforos
Go up to Técnicas Usadas em Unix
Go forward to Variáveis de Condição
Spin-Locks
Mutexes que fazem busy-wait. Para operações rápidas:
void spin_lock(spinlock_t *s) {
while (test_and_set(s) != 0) ;
}
Evitar tráfego desnecessário:
void spin_lock(spinlock_t *s) {
while (test_and_set(s) != 0)
while (*s != 0) ;
}
- Bloqueiam CPU: usados por tempo curto.
- Uniprocessadores podem bloquear se spin-lock tem disable de
interrupts.
- Usados para implementar semáforos.
vitor@cos.ufrj.br