多线程方案对比
| 技术方案 | 简介 | 编程语言 | 线程生命周期 | 使用频率 |
|---|---|---|---|---|
| pthread | 一套通用的多线程API 适用于Unix、Linux、Windows等系统 跨平台,可移植 使用难度大 |
C | 程序员管理 | 几乎不用 |
| NSThread | 使用更加面向对象 简单易用,可直接操作线程对象 |
OC | 程序员管理 | 偶尔使用 |
| GCD | 旨在替代NSThread等线程技术 充分利用设备的多核 |
C | 自动管理 | 经常使用 |
| NSOperation | 基于GCD 比GCD多了一些简单实用的功能 使用更加面向对象 |
OC | 自动管理 | 经常使用 |
各种队列执行效果
| 并发队列 | 串行队列 | 主队列 | |
|---|---|---|---|
| 同步 | 没有开启新线程 串行执行任务 |
没有开启新线程 串行执行任务 |
没有开启新线程 串行执行任务 |
| 异步 | 有开启新线程 并发执行任务 |
有开启新线程 串行执行任务 |
没有开启新线程 串行执行任务 |
其中主队列是特殊的串行队列
全局队列是特殊的并发队列
** 使用sync函数往当前串行队列中添加任务,会卡住当前的串行队列(产生死锁)**
GCD多线程处理方案
线程组 dispash_group_t
dispash_group_t
异步栅栏函数 dispatch_barrier_async
dispatch_barrier_async
信号量 dispatch_semaphore
dispatch_semaphore







网友评论