美文网首页
线程安全问题

线程安全问题

作者: 武_IOS书 | 来源:发表于2018-09-03 20:56 被阅读0次

    当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题。就好比几个人在同一时间修改同一个表格造成的数据错乱。
    解决多线程安全问题的方法
    一:互斥锁(同步锁)

    @synchronized(object){
        //需要锁定的代码
    }
    

    判断的时候锁对象要存在,如果代码中只有一个地方需要加锁,大多都使用self作为锁对象,这样可以避免单独再创建一个锁对象。
    加了互斥锁的代码,当新线程访问时,如果发现其他线程正在执行锁定的代码,新线程就会进入休眠。

    二:自旋锁
    加了自旋锁,当新线程访问代码时,如果发现有其他线程正在锁定代码,新线程会用死循环的方式,一直等待锁定的代码执行完成。相当于不停尝试执行代码,比较消耗性能。
    属性修饰atomic本身就有一把自旋锁。
    下面说一下属性修饰nonatomic和atomic

    相关文章

      网友评论

          本文标题:线程安全问题

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