iOS之深入解析“锁”的底层原理
生活随笔
收集整理的這篇文章主要介紹了
iOS之深入解析“锁”的底层原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、OSSpinLock(自旋鎖)
- 自從 OSSpinLock 出現安全問題,在 iOS10 之后就被 Apple 廢棄。自旋鎖之所以不安全,是因為獲取鎖后,線程會一直處于忙等待,造成了任務的優先級反轉;
- 其中的忙等待機制可能會造成高優先級任務一直 running 等待,占用時間片,而低優先級的任務無法搶占時間片,會造成一直不能完成,鎖未釋放的情況;
- 在 OSSpinLock 被棄用后,其替代方案是內部封裝 os_unfair_lock,而 os_unfair_lock 在加鎖時會處于休眠狀態,而不是自旋鎖的忙等待狀態。
二、atomic(原子鎖)
- atomic 適用于 OC 中屬性的修飾符,其自帶一把自旋鎖,但是一般基本不使用,都是使用的 nonatomic;
- setter 方法會根據修飾符調用不同方法,其中最后會統一調用 reallySetProperty 方法,其中就有 atomic 和非 atomic 的操作;
總結
以上是生活随笔為你收集整理的iOS之深入解析“锁”的底层原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS之深入解析保证线程安全的“锁”的使
- 下一篇: iOS之深入解析自动释放池autorel