iOS多线程方案
Contents
iOS多线程方案
一: 总览

- pthread
- 几乎不用
- C语言的,全部由程序员自己管理
- NSThread
- 程序员自己管理线程,用得少
- GCD
- 自动管理
- NSOperation
- 基于GCD
- 比GCD多了一些使用功能
- 面向对象
二: GCD
特点
- GCD会自动是用更多的CPU内核
- 自动管理线程生命周期(创建,调度,销毁等)
- 程序员只用高数GCD想要如何执行什么任务,不用编写线程管理代码
group
- 使用 enter leave 的时候一定要出入数量对等否则会崩溃的
dispatch_barrier_async
多个任务分两组完成
|
|
dispatch_apply 并行遍历
和group关联的API,会在所有任务执行完成后执行后续操作
“完成”会在全部执行完成后打印出来
- 应用场景
- 可在某些场景代替for循环
- 全部遍历,无顺序要求
- 不同文件并行iOS
- 可在某些场景代替for循环
|
|
三: NSOperation
基于GCD封装
配合NSOperationQueue实现多线程
- 使用步骤
- 创建任务
- 先将需要执行的操作封装到NSOperation对象中
- 创建队列
- 创建NSOperationQueue
- 将任务加入队列
- 将NSOperation加入到NSOperationQueue中
- 创建任务
- 使用注意
- 由于NSOperation是抽象类需要使用其子类
- NSInvocationOperation
- 指定Target和Selectore
- NSBlockOperation
- 基于Block
- 定义继承自NSOperation的子类
- NSInvocationOperation
- 由于NSOperation是抽象类需要使用其子类
NSOperationQueue
暂停和取消不是立刻取消当前操作,而是等当前的操作执行完之后不再进行新的操作。

