SpinLock — это примитив блокировки, который активно крутится в ожидании (busy-wait), а не приостанавливает поток, когда ждёшь освобождения блокировки. Такой подход позволяет избежать затрат на переключение контекста.
SpinLock наиболее эффективен в следующих ситуациях:
Главное преимущество в том, что busy-wait может быть дешевле, чем затраты на приостановку и возобновление потока через переключение контекста. Когда блокировка удерживается микросекунды, а не миллисекунды, отказ от переключения контекста экономит значительное время.
SpinLock не подходит для:
Используй SpinLock, когда у тебя есть предсказуемое, минимальное время удержания блокировки на многоядерных системах, где стоимость busy-wait ниже, чем затраты на приостановку потока.
SpinLock предпочтителен перед традиционными мьютексами, когда время удержания блокировки находится в диапазоне миллисекунд на многоядерных процессорах.
Новый — ещё не проверен сообществом
Вы