iOS线程安全

在GCD出现之前,有两种方法

第一种是采用内置的“同步块”(synchronization block)

Snip20160726_1.png
Snip20160726_2.png

第二种是直接使用NSLock

Snip20160726_3.png
Snip20160726_5.png

上面两种方法都很好,不过有缺陷。在极端情况下,同步块会导致死锁,效率也不高。

替代方法就是GCD,它能以简单,高效的形式为代码加锁

1.可以这样做,使用“串行同步队列”,将读取操作与写入操作都放在同一个队列里面,既可以保证数据同步

Snip20160726_12.png
Snip20160726_13.png

2.最好的做法 利用并发队列和栅栏 。(获取方法可以并发执行,保证设置方法和获取方法不能并发执行,就可以保证数据安全)

Snip20160726_14.png
Snip20160726_19.png
Snip20160726_20.png
Snip20160726_21.png
Snip20160726_18.png

--摘自 编写高质量oc52个有效方法-41条
不错的书~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容