Cerrojos
De Wiki de Sistemas Operativos
Esto es un esbozo.
while(cerrojo != 0);
cerrojo = 1;
...
cerrojo = 0;
Esto es problemático.
Podemos implementar cerrojos mediante instrucciones especiales de comprobación y puesta a 0 y 1.
int cerrojo = 0;
void lock() {
while (__sync_lock_test_and_set(&cerrojo, 1));
}
void unlock() {
__sync_lock_release(&cerrojo);
}