iOS 多线程安全锁
2018-08-15 本文已影响11人
说不出口的喵
互斥锁特点:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。
自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程会立即执行。性能最高的锁,OSSpinLock已经不再安全,不再使用。
信号量:一个线程完成了操作完共享数据后,就通过发出信号量告诉别的线程,你们现在可以用这块共享资源了。
性能比较:OSSpinLock > dispatch_semaphore > NSLock > NSRecursiveLock > NSConditionLock > @synchronized.
生产环境一般推荐使用dispatch_semaphore。