美文网首页iOS 进阶文集
iOS 高级面试剖析课程-锁

iOS 高级面试剖析课程-锁

作者: 繁华落尽丶lee | 来源:发表于2018-09-04 09:39 被阅读8次
多线程.png

课程: 新浪微博资深大牛全方位剖析 iOS 高级面试

在iOS多线程中,经常会出现资源竞争和死锁的问题。本节将学习iOS中不同的锁。

iOS当中有哪些锁?

@synchronized 常用于单例
atomic 原子性
OSSpinLock 自旋锁
NSRecursiveLock 递归锁
NSLock 
dispatch_semaphore_t 信号量
  • @synchronized 使用场景:一般在创建单例对象时使用,保证对象在多线程中是唯一的。
  • atomic 属性关键字原子性,保证赋值操作是线程安全的,读取操作不能保证线程安全。
  • OSSpinLock 自旋锁。特点:循环等待访问,不释放当前资源。常用于轻量级数据访问,简单的int值+1/-1操作。
  • NSLock 某个线程A调用lock方法。这样,NSLock将被上锁。可以执行“关键部分”,完成后,调用unlock方法。如果,在线程A 调用unlock方法之前,另一个线程B调用了同一锁对象的lock方法。那么,线程B只有等待。直到线程A调用了unlock。
[lock lock]; //加锁
// 关键部分
[lock unlock]; // 解锁
  • NSRecursiveLock 递归锁,特点:递归锁在被同一线程重复获取时不会产生死锁。
  • dispatch_semaphore_t 信号量
// 创建信号量结构体对象,含有一个int成员
dispatch_semaphore_create(1);
// 先对value减一,如果小于零表示没有资源可以访问。通过主动行为进行阻塞。
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
// value加1,小于等零表示有队列在排队,通过被动行为进行唤醒
dispatch_semaphore_signal(semaphore);

以上是iOS中的锁,如果想深入研究可以查看下面这些文章:
正确使用多线程同步锁@synchronized()
深入理解iOS开发中的锁
Object-C 多线程中锁的使用-NSLock
不再安全的OSSpinLock

小结

  • 怎样用GCD实现多读单写?
  • iOS提供几种多线程技术各自的特点?
  • NSOperation对象在Finished之后是怎样从队列中移除的?
  • 你都用过哪些锁?结合实际谈谈你是怎样使用的?

相关文章

  • iOS 高级面试剖析课程-锁

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 在iOS多线程中,经常会出现资源竞争和死锁的问题。本节将学习...

  • iOS 高级面试剖析课程-多线程

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 iOS中多线程 首先看一道面试题 iOS中多线程有哪些实现方...

  • iOS开发进阶 - 第三方库

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、AFNetworking 框架图 主要类关系图 主要类介...

  • iOS 高级面试剖析课程-RunLoop

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、 RunLoop 通过内部维护事件循环来对事件/消息进行...

  • iOS开发进阶-算法一

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、字符串反转 给定字符串 Hello, world, 实现...

  • iOS开发进阶-TCP/UDP

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、TCP 1.1特点 为了通过IP数据报实现可靠传输,需要...

  • iOS开发进阶-HTTP协议

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、HTTP协议 超文本传输协议 请求/响应报文 连接简历流...

  • iOS开发进阶-DNS解析&Cookie&Ses

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 DNS解析 什么是DNS解析? 域名到IP地址的映射,DNS...

  • iOS开发进阶- HTTPS与网络安全

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、HTTPS和网络安全问题 HTTPS:是以安全为目标的H...

  • iOS开发进阶- 图片缓存框架

    课程: 新浪微博资深大牛全方位剖析 iOS 高级面试 一、框架&架构 模块化分层解耦降低代码重合度 二、图片缓存框...

网友评论

    本文标题:iOS 高级面试剖析课程-锁

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