iOS各种锁及线程使用

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;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容