Por qué los spinlocks son perjudiciales en entornos sin sistema operativo

Fuentes: Why Spinlocks Are Harmful in No-OS Environments

El uso de spinlocks en implementaciones de Rust sin sistema operativo (#[no_std]) se considera un patrón anti-estándar debido a sus riesgos de concurrencia. A diferencia de los mutex basados en el sistema operativo, que utilizan llamadas al sistema para bloquear la CPU, los spinlocks operan completamente en el espacio de usuario, haciendo que un hilo que espera parezca al sistema operativo como uno que realiza una computación intensa. Esta ilusión puede provocar la inversión de prioridad, donde un hilo de baja prioridad es preemptado por hilos de alta prioridad, impidiendo que obtenga acceso a la CPU y causando que otros hilos queden bloqueados indefinidamente. Además, en entornos de hardware desnudo (bare metal) o en el kernel, la ausencia de un sistema operativo para gestionar la preemoción de hilos tras la expiración del tiempo de espera agrava el problema. Un caso crítico es la posibilidad de un deadlock garantizado si un interruptor de procesador llega mientras el código principal está en una sección crítica y el manejador de interruptos intenta acceder al mismo recurso. El autor del artículo, mantenedor de la librería once_cell, argumenta que esta lógica es flawed y que los spinlocks deben evitarse en favor de mecanismos de sincronización más robustos, incluso en entornos de bajo nivel donde la simplicidad de los spinlocks sugiere una solución rápida.