深入理解 iOS 开发中的锁:https://www.jianshu.com/p/ddbe44064ca4
iOS中保证线程安全的几种方式与性能对比:https://www.jianshu.com/p/938d68ed832c
iOS 常见知识点(三):Lock:https://www.jianshu.com/p/ddbe44064ca4
[关于 @synchronized,这儿比你想知道的还要多]:http://yulingtianxia.com/blog/2015/11/01/More-than-you-want-to-know-about-synchronized/
- 互斥锁(Mutex):是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区而达成。
- 自旋锁:是用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。一旦获取了自旋锁,线程会一直保持该锁,直至显式释放自旋锁。 自旋锁避免了进程上下文的调度开销,因此对于线程只会阻塞很短时间的场合是有效的。
- 条件锁:就是条件变量,当进程的某些资源要求不满足时就进入休眠,也就是锁住了。当资源被分配到了,条件锁打开,进程继续运行。