iOS各种锁的描述
2017-01-18 本文已影响23人
忘川_之上
1、atomic ->线程安全的,较影响性能 nonatomic -> 线程不安全,推荐使用的,从下图可以看出实际上atomic线程高并发时候也并不安全。
![](https://img.haomeiwen.com/i3150942/1fa09d4db11a1a6c.png)
2、 @synchronized 的作用是创建一个互斥锁,保证在统一时间对对象的访问唯一,在下图中就已经可以保证线程访问安全了,不过需要注意的是这边的互斥锁锁的是要修改的对象的属性 的对象,就如下图中锁住的是self,而操作的是self的属性。
![](https://img.haomeiwen.com/i3150942/7f074f35c4c5f903.png)
3、NSLock的使用
![](https://img.haomeiwen.com/i3150942/4ef2db29d6ddae8c.png)
4、dispatch_semaphore利用信号量进行锁定
![](https://img.haomeiwen.com/i3150942/e859edc2d5ae1e52.png)
5、最后聊一下单类吧,全局有且只有一个dispatch_once_t,推荐使用dispatch_once的方法来书写,相对性能会好些
![](https://img.haomeiwen.com/i3150942/53c1fada291e38f3.png)