OSSpinLock 因为线程安全问题已被 Apple 废弃。苹果建议使用 os_unfair_lock
替换,os_unfair_lock
是互斥锁。
我们在使用多线程访问同一块资源时,常会面临数据安全的问题。为了能够保证每次只有一个线程在访问同一块资源,我们需要借助锁。本篇归类记录 iOS 常见的八种锁是什么及怎么样。
iOS 日常开发过程中,涉及到多线程处理的需求,绝大多数可以通过 GCD 来完成。但如果想要给 task 添加依赖、取消、暂停、恢复的需求,GCD 的实现就会变得很复杂。这时就引申除了 NSOperation,NSOperation 是基于 GCD 的封装,提供面向对象的形式。我们可以借助 NSOperation 将每个 task 封装为一个个对象再进行操作,这也使得线程处理的代码逻辑更为清晰易懂。
GCD(Grand Central Dispatch)是苹果提出的一套多线程解决方案,它拥有系统级的线程管理机制,开发者不需要关注线程的生命周期管理,只需要关注要执行的任务。GCD 可用于多核的并行运算,会自动利用更多的 CPU 内核。