多线程-锁

来源:互联网 发布:京东咚咚工作台mac版 编辑:程序博客网 时间:2024/05/29 11:51

1 iOS开发中有8种锁 @synchronized性能最差- -!

OSSpinLock

dispatch_semaphore

pthread_mutex

NSLock

NSCondition

pthread_mutex(recursive)

NSRecursiveLock

NSConditionLock

@synchronized


OSSpinLock自旋锁

自旋锁不会让等待进入睡眠状态


dispatch_semaphore信号量

dispatch_semaphore_wait 相当于来

dispatch_semaphore_signal 相当于走

调用一次dispatch_semaphore_wait 量就会减少1个, 当为0时, 只能等待


pthread_mutex互斥锁


pthread_mutex(recursive)递归锁

同一线程多次lock是不允许的, 而递归锁允许同一个线程在未释放其拥有的锁时候反复对锁进行加锁操作


NSLock普通锁


NSCondition


NSRecursiveLock递归锁


@synchronized条件锁


NSConditionLock条件锁



0 0