Спін-блокування є відповідним механізмом синхронізації низького рівня головним чином для використання на мультипроцесорах зі спільною пам'яттю. Коли викликаючий потік запитує спін-блокування, яке вже утримується іншим потоком, другий потік обертається в циклі, щоб перевірити, чи блокування стало доступним.
Спін-блокування можна використовувати для блокування листового рівня, де виділення об’єкта, що мається на увазі за допомогою монітора, за розміром або через тиск збору сміття є надто дорогим.
SpinLock може бути корисним коли блокування спільного ресурсу не буде утримуватися дуже довго. У таких випадках на багатоядерних комп’ютерах може бути ефективним, щоб заблокований потік обертався протягом кількох циклів, доки не буде знято блокування. Під час обертання потік не блокується, що є процесом, який інтенсивно використовує процесор.
Тому що вони уникнути накладних витрат через перепланування процесів операційної системи або перемикання контексту, спін-блокування ефективні, якщо потоки, ймовірно, будуть заблоковані лише на короткий час. З цієї причини ядра операційної системи часто використовують спін-блокування.
Відповідь: спін-блокування не підходять для однопроцесорних систем, оскільки умова, яка призведе до виходу процесу зі спін-блокування, може бути отримана лише шляхом виконання іншого процесу.
Спосіб обробки цього в коді ядра ОС простий: потік, що утримує спін-блокування, вимикає випередження, утримуючи блокування спіну. Це також може вимкнути переривання, але вимкнення випередження є критичним.