Sondowanie odnosi się do wielokrotnego sprawdzania, czy zasób ( dowolny rodzaj zasobu) jest gotowy.
Blokada polega na tym, że badany zasób jest blokadą.
Pamiętaj, że odpytywanie nie jest złe. W szczególności odpytywanie jest skuteczne, gdy dane są zwykle gotowe podczas odpytywania. Sondowanie jest nieefektywne tylko wtedy, gdy zrobisz to bez uzyskiwania w zamian jakichkolwiek danych.
Z drugiej strony, przerwania są nieefektywne, jeśli jest tak dużo danych, że ciągle się przerywasz. Są wydajne, jeśli dane docierają na tyle rzadko, że można faktycznie wykonać pożyteczną pracę przed przerwaniem.
Mogę dać ci prawdziwy przykład z własnego doświadczenia: 15 lat temu miałem program poczty elektronicznej skonfigurowany tak, aby przeszkadzał mi za każdym razem, gdy przychodzi nowy e-mail. To się zdarzało raz lub dwa razy w tygodniu. Ciągłe sprawdzanie mojej skrzynki odbiorczej byłoby ogromną stratą czasu.
Obecnie mam wyłączone wszystkie powiadomienia. Ja wiem , że kiedy patrzę w mojej skrzynce odbiorczej, że nie będzie tam nowe e-maile. Sondowanie jest teraz znacznie wydajniejsze.
Blokady są skuteczne, gdy: a) prawdopodobieństwo, że zamek zostanie przejęty, jest niskie, i b) jeśli zamek zostanie przejęty, będzie utrzymywany tylko przez krótki czas. Innymi słowy: jest skuteczny w przypadku większości niezamkniętych zamków drobnoziarnistych, ale nieefektywny w przypadku mocno rywalizowanych zamków gruboziarnistych.
(I oczywiście spinlocki działają tylko wtedy, gdy istnieje prawdziwa równoległość, w przeciwnym razie drugi wątek nie będzie miał szansy zwolnić blokady. Myślę, że to trochę oczywiste, ale i tak chciałem to stwierdzić.)