美文网首页
iOS各种锁及线程使用

iOS各种锁及线程使用

作者: 星星杨 | 来源:发表于2024-03-10 16:19 被阅读0次

    iOS中的八大锁解析与使用
    iOS底层学习之八大锁的分析

    锁的分类

    • 自旋锁 busy-waiting(忙等状态):线程获取锁,发现锁被占用,不断进行锁请求,直到获取。等待锁的线程处于忙等状态线程并会占用cpu资源;
    • 互斥锁 sleep-waiting(休眠状态):线程获取锁,发现锁被占用,就向系统申请锁空闲时唤醒他并立刻休眠。等待锁的线程处于休眠状态,并不会占用cpu资源;互斥锁分为递归(可递归调用)、非递归;
    • 特殊锁读写锁;
    • OSSpinLock -- 自旋锁 iOS10及以后弃用
    • os_unfair_lock -- 互斥锁 iOS10以后替代OSSpinLock使用
    • NSLock -- 互斥锁
    • NSCondition -- 互斥锁
    • NSConditionLock -- 互斥锁
    • dispatch_semaphore -- 互斥锁
    • pthread_mutex -- 互斥锁(可设置:递归)
    • NSRecursiveLock -- 递归锁
    • @synchronized -- 递归锁

    pthread_rwlock读写锁

    image.png

    NSLock、NSCondition、NSConditionLock、NSRecursiveLock的底层实现都是基于pthread_mutex;

    相关文章

      网友评论

          本文标题:iOS各种锁及线程使用

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