Спинлок — это примитив синхронизации, используемый для защиты критических секций от конкурентного доступа нескольких потоков.
Характеристики:
Типичная реализация:
Часто реализуется с использованием атомарных операций, таких как test-and-set или compare-and-swap, чтобы обеспечить безопасность при конкурентном доступе к флагу состояния спинлока.
c
Сравнение со мьютексом:
| Характеристика | Спинлок | Мьютекс |
|---|---|---|
| Механизм ожидания | Активное ожидание (busy-waiting) | Пассивное ожидание (sleep) |
| Расход CPU при простое | Высокий | Низкий |
| Накладные расходы | Низкие | Высокие |
| Лучше использовать при | Коротком ожидании | Длительном ожидании |
| Переключение контекста | Нет | Есть |