iOS

iOS 多线程安全锁

2018-08-15  本文已影响11人  说不出口的喵

互斥锁特点:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。

自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程会立即执行。性能最高的锁,OSSpinLock已经不再安全,不再使用。

信号量:一个线程完成了操作完共享数据后,就通过发出信号量告诉别的线程,你们现在可以用这块共享资源了。

性能比较:OSSpinLock > dispatch_semaphore > NSLock > NSRecursiveLock > NSConditionLock > @synchronized.

生产环境一般推荐使用dispatch_semaphore。

上一篇下一篇

猜你喜欢

热点阅读