Cerrojos

De Wiki de Sistemas Operativos
Revisión del 09:50 30 mar 2011 de Pneira (discusión | contribuciones) (esbozo (revisión))
Saltar a: navegación, buscar

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);
}