iOS多线程锁

作者: 昵称是乱起的 | 来源:发表于2019-01-29 13:59 被阅读40次
    多线程的几种锁

    OSSpinLock(自旋锁,等待锁的线程会处于忙等状态,一直占用着CPU资源,还会出现优先级反转的问题,如果低优先级的锁先加锁了,等待锁的线程优先级较高,它会一直占用着CPU资源,优先级低的线程就无法释放锁。适用于简单轻量级数据访问的操作,在sideTable源码引用计数+1-1的那里看见过)

    下面的都是互斥锁,等待的时候会处于休眠状态
    os_unfair_lock
    pthread_mutex
    dispatch_semaphore
    dispatch_queue(DISPATCH_QUEUE_SERIAL)
    NSLock
    NSRecursiveLock
    NSCondition
    NSConditionLock
    @synchronized

    两种常用的读写锁

    pthread_rwlock:读写锁
    dispatch_barrier_async:异步栅栏调用

    semaphore的底层原理
    dispatch_semaphore_create()
    struct semaphore {
        int value;
        List<thread>;
    }
    
    image.png
    image.png

    相关文章

      网友评论

        本文标题:iOS多线程锁

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