性能从高到低
- os_unfair_lock
- OS_SPinLock
- dispatch_semaphore
- pthread_mutex
- dispatch_serial_queue
- NSLock
- NSCondition
- pthread_mutex(recursive)
- NSRecuresiveLock
- NSConditionLock
- @synchronized
互斥锁、自旋锁比较
- 自旋锁
1>预计等待锁的时间较短;
2>加锁的代码(临界区)经常被调用,但竞争情况很少发生;
3> CPU资源不紧张;
4> 多核处理器
- 互斥锁
1> 预计等待锁的线程较长;
2> 单核处理器;
3> 临界区有IO操作;
4> 临界区代码复杂或循环量大,竞争非常激烈 ;