美文网首页
IOS 自旋锁和互斥锁 

IOS 自旋锁和互斥锁 

作者: FengxinLi | 来源:发表于2017-10-17 14:07 被阅读210次

自旋锁和互斥锁

相同点:都能保证同一时间只有一个线程访问共享资源。都能保证线程安全。

不同点:

互斥锁:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。

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

自旋锁的效率高于互斥锁。

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

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

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

atomic 原子属性(线程安全),保证同一时间只有一个线程能够写入(但是同一个时间多个线程都可以取值),atomic 本身就有一把锁(自旋锁)

atomic:线程安全,需要消耗大量的资源

nonatomic:非线程安全,不过效率更高,一般使用nonatomic

相关文章

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

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

  • CLH并发队列

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

  • iOS 锁

    同步锁 自旋锁 互斥锁

  • ios 锁的种类及性能

    一、基本概念 ios中的锁主要可以分为两大类,互斥锁 和 自旋锁,其他锁都是这两种锁的延伸和扩展。 1、介绍 互斥...

  • iOS底层探索-多线程锁

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

  • 线程锁

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

  • iOS 多线程,自旋锁和互斥锁详解

    iOS 多线程,自旋锁和互斥锁详解[https://www.jianshu.com/p/a49739c41bac]...

  • iOS 多线程之GCD

    iOS 多线程,自旋锁和互斥锁详解[https://www.jianshu.com/p/a49739c41bac]...

  • iOS 多线程之NSThread

    iOS 多线程,自旋锁和互斥锁详解[https://www.jianshu.com/p/a49739c41bac]...

  • iOS 多线程之NSOperation

    iOS 多线程,自旋锁和互斥锁详解[https://www.jianshu.com/p/a49739c41bac]...

网友评论

      本文标题: IOS 自旋锁和互斥锁 

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