iOS开发知识小集

iOS下常用锁了解

2019-02-28  本文已影响37人  永远保持一颗进取心

@synchronized

关于 @synchonized(){} 的使用官方文档解释得非常清楚。可以总结为以下几点:

atomic

这是一个属性修饰符,保证多线程环境下,对所修饰的变量的读取是线程安全的,但是会影响存取的效率。

NSLock

简单的互斥锁,不可重入,重入会导致死锁。

OSSpinLock

自旋锁:循环等待访问,不释放当前资源。
应用场景:用于轻量级的数据访问。

自旋锁已经不在安全,可以拜读 ibireme 大神的文章:不再安全的 OSSpinLock.

NSRecursiveLock

递归锁,解决简单互斥锁线程重入导致死锁的问题,可以在循环语句或者递归方法中应用

dispatch_semaphore_t

信号量,可以看本人写的关于 dispatch_semaphore_t 文章

上一篇下一篇

猜你喜欢

热点阅读