Blokada typu spinlock to metoda synchronizacji międzyprocesowej, w której oczekiwanie na zwolnienie blokady polega na ciągłym badaniu jej stanu (aktywne oczekiwanie).
Spinlock:
Inicjalizacja.
Zdobycie blokady.
Zwolnienie blokady.
typedef unsigned long spinlock_t;
spinlock_init(spinlock_t *lock)
{
*lock = 1;
}
spinlock_lock(spinlock_t *lock)
{
zaladuj_do_rejestru(rejestrA, 0);
do
xchg(rejestrA, lock);
while (wartosc_w_rejestrze(rejestrA)!=1)
}
spinlock_unlock(spinlock_t *lock)
{
zaladuj_do_rejestru(rejestrA, 1);
xchg(rejestrA, lock);
}