Spinlock

Z Wikipedii, wolnej encyklopedii

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[edytuj | edytuj kod]