Опитування стосується неодноразової перевірки готовності ресурсу ( будь-якого виду).
Спінінг - це коли блокування ресурсу, який ви опитуєте.
Зауважте, що опитування не є поганим. Зокрема, опитування ефективне, коли зазвичай є дані, готові до опитування. Опитування є неефективним лише в тому випадку, якщо ви робите це, не отримуючи жодних даних взамін.
З іншого боку, переривання неефективні, якщо є стільки даних, що ви постійно перериваєтесь. Вони ефективні, якщо дані надходять досить рідко, що ви можете фактично виконати якусь корисну роботу, перш ніж перерватися.
Я можу навести приклад із реального життя з власного досвіду: 15 років тому в мене була створена програма електронної пошти, щоб перервати мене щоразу, коли надходить нова електронна пошта. Що траплялося один-два рази на тиждень. Постійно перевіряти папку "Вхідні" було б колосальною тратою часу.
На сьогоднішній день у мене всі повідомлення вимкнено. Я знаю, що кожного разу, коли я заглянув у свою поштову скриньку, там з’являться нові електронні листи. Зараз опитування значно ефективніше.
Спінлок є ефективним, коли: а) ймовірність того, що замок буде знято, і б) якщо замок знятий, він буде триматися лише ненадовго. Іншими словами: він ефективний для переважно непомітних дрібнозернистих замків, але неефективний для сильно замкнутих грубозернистих замків.
(І, звичайно, спінкі працюють лише тоді, коли існує справжній паралелізм, інакше інший потік не матиме шансу звільнити замок. Я думаю, це очевидно, але я хотів це заявити все-таки.)