Опрос - это многократная проверка того, готов ли ресурс ( любой вид ресурса).
Спинлок - это когда блокируемый ресурс опрашивается.
Обратите внимание, что опрос не плохо. В частности, опрос эффективен, когда при опросе обычно имеются данные. Опрос только неэффективен, если вы делаете это без получения каких-либо данных взамен.
С другой стороны, прерывания неэффективны, если существует так много данных, что вы постоянно получаете прерывания. Они эффективны, если данные поступают достаточно редко, так что вы можете сделать некоторую полезную работу до того, как их прервут.
Я могу привести вам реальный пример из собственного опыта: 15 лет назад у меня была настроена программа электронной почты, чтобы прерывать меня каждый раз, когда приходит новое электронное письмо. Это происходило один или два раза в неделю. Постоянная проверка моего почтового ящика была бы колоссальной тратой времени.
В настоящее время у меня все уведомления отключены. Я знаю, что всякий раз, когда я заглядываю в свой почтовый ящик, там появляются новые письма. Опрос намного эффективнее сейчас.
Спин-блокировки эффективны, когда а) вероятность того, что блокировка снята, мала, и б) если блокировка снята, она будет удерживаться только в течение короткого времени. Другими словами: он эффективен для в большинстве случаев неконтролируемых мелкозернистых замков, но неэффективен для сильно конфликтующих крупнозернистых замков.
(И, конечно, спин-блокировки работают только тогда, когда есть истинный параллелизм, иначе у другого потока не будет возможности снять блокировку. Я думаю, это вроде бы очевидно, но я все равно хотел это заявить.)