iOS线程安全
2016-07-26 本文已影响74人
Jamesholy
在GCD出现之前,有两种方法
第一种是采用内置的“同步块”(synchronization block)
Snip20160726_1.png Snip20160726_2.png第二种是直接使用NSLock
Snip20160726_3.png Snip20160726_5.png上面两种方法都很好,不过有缺陷。在极端情况下,同步块会导致死锁,效率也不高。
替代方法就是GCD,它能以简单,高效的形式为代码加锁
1.可以这样做,使用“串行同步队列”,将读取操作与写入操作都放在同一个队列里面,既可以保证数据同步
Snip20160726_12.png Snip20160726_13.png2.最好的做法 利用并发队列和栅栏 。(获取方法可以并发执行,保证设置方法和获取方法不能并发执行,就可以保证数据安全)
Snip20160726_14.png Snip20160726_19.png Snip20160726_20.png Snip20160726_21.png Snip20160726_18.png--摘自 编写高质量oc52个有效方法-41条
不错的书~