Blokada typu spinlock

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:

spinlock_init

Inicjalizacja.

spinlock_lock

Zdobycie blokady.

spinlock_unlock

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