iOS 常见面试题--多线程
2021-02-20 本文已影响0人
奋斗的小马达
iOS的多线程方案有哪几种?你更倾向于哪一种?
答:iOS多线程方案有以下四种
多线程的四种方案.png
PThreads基于C语言 使用难度比较大 一般针对底层操作的线程,其生命周期有程序员管理
NSThread 是苹果官方提供的一种面向对象的轻量级的多线程解决方案,一个NSThread对象就代表一个线程,其生命周期由程序员控制,
GCD是一套基于C语言的api 其生命周期由系统自己控制 你只需要告诉它执行什么代码就可以了,具有简单易用等特点
GCD还可以用于多核并行运算
GCD有两个核心的概念,任务和队列
任务
任务分为同步任务和异步任务
两者最大的区别就是是否具备开辟线程的能力
同步任务;任务只能在一个线程中执行,不具备开辟线程的能力
异步任务:任务可以在多个线程中执行具有开辟线程的能力
队列
队列又分为串行队列和并发队列
两者最大的区别是任务能否同时执行
串行队列,任务一个接着一个执行 上一个任务执行结束下一个任务才开始执行
并发队列:多个任务可以同时执行,且互不影响,并发队列只有在异步执行才有效。
NSOperation 和NSOperatinoQueue
NSOperation 和NSOperatinoQueue 是对GCD更高一层的封装,完全面向对象,比GCD更加简单易用
NSOperation 和NSOperatinoQueue 可以添加线程依赖,方便控制执行顺序
可以设置操作的优先级
可以使用KVO监听一个操作的状态