1.进程
顾名思义,进,正在进行的,程,程序,简单来理解就是正在进行的程序
2.线程
一个进程至少有一条线程,程序运行后会默认开启一条线程,就是‘主线程’,也叫‘UI线程’。它是用来显示、刷新UI界面、监听UI事件的。
一条线程中的任务是顺序执行的,例如迅雷下载电影,一部下载完才会继续下载。
3.多线程
一个进程可以开多个线程,还是迅雷下载电影,它可以下载多部电影,同时下载。
多线程的实现主流有三种,另外一种基于C的,最原始,几乎不用。
NSThread,更加面向对象,简单易用,但缺点是需要手动管理生命周期,使用频率偶尔使用。
GCD,替代NSThread,基于C的,能充分利用设备的多核,自动管理生命周期,使用频率经常使用。
NSOperation,对GCD的重新封装,更加面向对象,多了一些简单实用的功能,自动管理生命周期,使用频率经常使用。
该怎么选择呢?
简单追求安全点的话就选择NSOperation,
大量并发,追求高效就选择GCD
4.同步和异步
同步:一个线程必须等上一个线程执行完了才能执行当前的线程。例如迅雷下载线程必须等待网络连接的线程完成之后才能进行。没有联网,怎么下载电影啊。
异步:线程之间没有先后之分,一个线程不用等待其他线程就可以执行,例如迅雷可以同时开启多条线程,同时下载多部电影。
5.常用方法
dispatch_async
dispatch_barrier_async
dispatch_group_async