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

自旋锁和互斥锁

作者: 雨天多久就 | 来源:发表于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来保证线程安全

    相关文章

      网友评论

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

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