Spinlock (wirująca blokada) – sposób realizacji synchronizacji międzyprocesowej, w którym oczekiwanie na zwolnienie blokady polega na ciągłym badaniu jej stanu. Spinlock działa więc na zasadzie aktywnego oczekiwania, tj. zużywa czas procesora, wykonując cały czas pustą pętlę:
while blokada aktywna do
{nic nie rób};
W systemach operacyjnych z podziałem czasu, ten rodzaj synchronizacji na poziomie aplikacji jest zwykle nieefektywny, lepiej sprawdzają się systemowe obiekty synchronizujące, jak muteksy. Z kolei w systemach wieloprocesorowych spinlock może być bardziej efektywny, ponieważ pętla wykonuje się w kontekście procesu - unika się kosztownego czasowo wstrzymania procesu i przełączenia kontekstu na kod systemowy.
W systemie Windows NT sekcje krytyczne na maszynach wieloprocesorowych używają podejścia mieszanego: najpierw określoną liczbę razy sprawdza się, czy blokada została zwolniona, dopiero jeśli w tym czasie się nie zwolni, realizowany jest systemowy kod synchronizacji.
Bibliografia
- Abraham Silberschatz: Podstawy systemów operacyjnych. s. 197. ISBN 83-204-3215-4.
- InitializeCriticalSectionAndSpinCount Function. [dostęp 2009-07-18]. (ang.).