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

自旋锁和互斥锁的区别

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

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

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

自旋锁的效率高于互斥锁

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

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

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

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

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

相关文章

  • 自旋锁和互斥锁的区别 java中lock Syntronized

    自旋锁和互斥锁的区别 java中lock Syntronized区别无锁编程以及CAS

  • 多线程访问共享资源

    互斥锁和自旋锁的区别:互斥锁会让线程进入休眠装备(就绪状态)等待上一个线程执行完操作再去执行,自旋锁会用死循环的方...

  • 锁的原理(二):自旋锁、互斥锁以及读写锁

    一、锁的分类 在分析其它锁之前,需要先区分清楚锁的区别,基本的锁包括了二类:互斥锁 和 自旋锁。 1.1 自旋锁 ...

  • CLH并发队列

    1 什么是自旋锁和互斥锁? 由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么? 自旋锁说白了也是一种互斥锁,...

  • ios的11种锁

    一、自旋锁和互斥锁区别 自旋锁: 忙等待。即在访问被锁资源时,调用者线程不会休眠,而是不停循环在那里,直到被锁资源...

  • iOS面试题与核心基础之线程同步(锁,串行队列,信号量,@syn

    锁 iOS多线程锁有两类 自旋锁 和 互斥锁自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。资源已...

  • 线程锁

    1.常见的锁包括:互斥锁,自旋锁。 2.互斥锁是指锁的类型,自旋锁是指锁的实现方式。 3.互斥锁:当上...

  • iOS底层探索-多线程锁

    多线程的锁大致可分为两大类:互斥锁、自旋锁;也可以分为三类:互斥锁、自旋锁、读写锁。 一、互斥锁:互斥+同步(强调...

  • 自旋锁和互斥锁区别

    POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thre...

  • iOS 锁

    同步锁 自旋锁 互斥锁

网友评论

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

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