El sondeo se refiere a verificar repetidamente si un recurso ( cualquier tipo de recurso) está listo.
Un spinlock es cuando el recurso que está sondeando es un candado.
Tenga en cuenta que las encuestas no son malas. En particular, el sondeo es eficiente cuando generalmente hay datos listos cuando sondea. El sondeo solo es ineficiente si lo hace sin obtener datos a cambio.
Por otro lado, las interrupciones son ineficientes si hay tantos datos que constantemente te interrumpen. Son eficientes si los datos llegan lo suficientemente raramente como para que pueda realizar un trabajo útil antes de ser interrumpido.
Puedo darle un ejemplo de la vida real desde mi propia experiencia: hace 15 años, tenía mi programa de correo electrónico configurado para interrumpirme cada vez que recibía un nuevo correo electrónico. Lo que ocurría una o dos veces por semana. Comprobar constantemente mi bandeja de entrada habría sido una pérdida de tiempo colosal.
Hoy en día, tengo todas las notificaciones desactivadas. Yo sé que cada vez que miro en mi bandeja de entrada, no habrá nuevos correos electrónicos allí. El sondeo es mucho más eficiente ahora.
Los Spinlocks son eficientes cuando a) la probabilidad de que se tome el bloqueo es baja, yb) si se toma el bloqueo, solo se mantendrá por un corto tiempo. En otras palabras: es eficiente para cerraduras de grano fino en su mayoría no contenidas, pero ineficiente para cerraduras de grano grueso altamente contenidas.
(Y, por supuesto, los spinlocks solo funcionan cuando hay un verdadero paralelismo, de lo contrario, el otro hilo no tendrá la oportunidad de liberar el bloqueo. Supongo que es algo obvio, pero quería decirlo de todos modos).