&gt; since threads spinning on a spinlock are always runnable, this means that if there&#x27;s enough high-QOS threads waiting on a lock held by a lower-QOS thread, the thread that owns the lock will never execute.<p>Is this true? OSSpinLock (at least on OS X) calls thread_switch for 1ms every 1024 iterations (which as far as I understand is basically sleeping[1]). Presumably it&#x27;s not runnable while it&#x27;s sleeping?<p>After 100 * 1024 iterations it will also ask to be throttled to the lowest priority for 1ms, again with thread_switch.<p>[1] <a href="http:&#x2F;&#x2F;web.mit.edu&#x2F;darwin&#x2F;src&#x2F;modules&#x2F;xnu&#x2F;osfmk&#x2F;man&#x2F;thread_switch.html" rel="nofollow">http:&#x2F;&#x2F;web.mit.edu&#x2F;darwin&#x2F;src&#x2F;modules&#x2F;xnu&#x2F;osfmk&#x2F;man&#x2F;thread_s...</a>