美文网首页
自旋锁和互斥锁的区别

自旋锁和互斥锁的区别

作者: YSH_110 | 来源:发表于2021-04-13 19:30 被阅读0次
    • 相同点
      都能保证同一时间内只有一个线程访问共享资源,都能保证线程安全

    • 不同点
      互斥锁:如果共享数据已经有其他线程加锁了,线程就会就如休眠状态等待,一袋访问的资源解锁,则等待资源的线程立即执行

    自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一单被访问的资源被解锁,则等待资源的线程会立即执行

    自旋锁的效率高于互斥锁

    加了互斥锁的代码,当新线程访问时,如果发现其他线程正在执行锁定的代码,新线程就会进行休眠

    加了自旋锁,当新线程访问代码时,如果发现有其他线程正在执行锁定的代码,新线程就会死循环的方式,一直等待锁定的代码执行完成,相当于不停常识执行代码,比较消耗性能

    nonatomic 非原子属性,同一时间可以有很多线程读和写

    atomic 原子属性,同一时间只能有一个线程写入,但可以有多个线程去取值,atomic本来就有一把锁(自旋锁)

    atomic 线程安全,需要消耗大量资源
    nonatomic 非线程安全,效率更高,一般使用nonatomic

    相关文章

      网友评论

          本文标题:自旋锁和互斥锁的区别

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