iOS线程安全

作者: Jamesholy | 来源:发表于2016-07-26 20:33 被阅读74次

    在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条
    不错的书~

    相关文章

      网友评论

        本文标题:iOS线程安全

        本文链接:https://www.haomeiwen.com/subject/awznjttx.html