iOS-SpinLock自旋锁-什么是优先级反转
SpinLock自旋锁的优先级反转:
现在有三个线程 tA tB tC,优先级分别为低、中、高。
有一个同步资源SYNCR。
一开始SYNCR被低优先级线程 tA 占用;
此时tB开始运行,因为tB优先级高于tA,并且tA并未释放资源SYNCR;
这个时候更高级别的tC开始运行,并且tC想要获取资源SYNCR,但是SYNCR正在被tA占用,导致tC需要等tA释放资源;
这样就会形成一种情况:tA因为有tB运行而得不到时间片,无法释放资源SYNCR,最高优先级的tC需要等待tB运行完成,然后tA释放资源才能有机会运行;
整体上呈现出最高优先级的tC等待中优先级的tB运行完成才能开始运行。
这就是大家说的优先级反转。
iOS-SpinLock自旋锁-什么是优先级反转
https://dnacore.github.io/post/0d1e7ea2-7168-4a9c-b66f-c094b9ef59cd.html