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

自旋锁和互斥锁

作者: 雨天多久就 | 来源:发表于2019-11-22 09:52 被阅读0次

自旋锁

属于busy_waiting类型的锁。 当线程访问资源的时候,发现资源被占据,就会不停地循环在那里,等待资源释放。

优点:避免了切换线程带来的牺牲,效率高于互斥锁
缺点:如果资源不能很快被释放,就会一直循环,使得CPU效率降低。
注:OC中的自旋锁OSSpinLock,现在不建议使用。当一个低优先级的线程在使用资源的时候,一个高优先级的线程在进行循环等待。由于高优先级线程比低优先级线程有更高的优先权,占据了CPU,会导致低优先级线程迟迟不能释放资源,导致相互等待的情况。

互斥锁

属于sleep_waiting类型,当线程访问资源的时候,发现资源被占据,就会休眠,以等待资源释放。
dispatch_semaphore ,pthread_mutex,NSLock,NSCondition等等都是互斥锁。
从别人的实验来看,目前信号量dispatch_semaphore和pthread_mutex效率比较高。

注:YYCache中内存缓存使用的是pthread_mutex来保证线程安全,硬盘缓存使用的是dispatch_semaphore来保证线程安全

相关文章

  • CLH并发队列

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

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

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

  • iOS 锁

    同步锁 自旋锁 互斥锁

  • iOS底层探索-多线程锁

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

  • 线程锁

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

  • 自旋锁 和 互斥锁

    自旋锁 和 互斥锁 Pthreads提供了多种锁机制: (1) Mutex(互斥量):pthread_mutex_...

  • 多线程复习

    自旋锁 & 互斥锁 自旋锁:atomic、OSSpinLock、dispatch_semaphore_t临界区加锁...

  • iOS 开发中加锁

    [1].OSSpinLock 自旋锁 [1]自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被...

  • iOS 多线程面试题(自旋锁与互斥锁)

    自旋锁与互斥锁 自旋锁: 是一种用于保护多线程共享资源的锁,与一般互斥锁(mutex)不同之处在于当自旋锁尝试获取...

  • iOS中的自旋锁与互斥锁

    一:自旋锁与互斥锁 自旋锁:是一种用于保护多线程共享资源的锁,与一般互斥锁(mutex)不同之处在于当自旋锁尝试获...

网友评论

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

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