多线程,充分利用设备多核的技术。应用非常广泛

iOS中的常见多线程方案

|技术方案|简介|语言|线程生命周期|使用频率|

|:---|:---|:---|:---|:---|

|pthread|一套通用的多线程API</br>适用于Unix\Linux\Windows</br>跨平台\可移植</br>使用难度大</br>是下面几种方案的底层实现|C|程序员管理|几乎不用|

|NSThread|使用更加面向对象</br>简单易用,可直接操作线程对象|OC|程序员管理|偶尔使用|

|GCD|旨在替代NSThread等线程技术</br>充分利用设备多核|C|自动管理|经常使用|

|NSOperation|基于GCD(底层是GCD)</br>比GCD多一些简单实用的功能</br>使用更加面向对象|OC|自动管理|经常使用|

容易混淆的术语

同步和异步:决定能不能开启新的线程

并发和串行:决定任务的执行方式

各种队列的执行效果

||并发队列|手动创建的串行队列|主队列|

|:---|:---|:---|:---|

|同步(sync)|没有开启新线程</br>串行执行任务|没有开启新线程</br>串行执行任务|没有开启新线程</br>串行执行任务|

|异步(async)|开启新线程</br>并发执行任务|开启新线程</br>串行执行任务|没有开启新线程</br>串行执行任务|