进程:
进程是操作系统分配资源的基本单位,拥有独立的内存单元,一个进程崩溃,不会对其他进程造成影响。
线程:
线程是独立运行和对立调度的基本单位。线程是真正的执行单元,负责代码的执行。一个进程可以有一个或多个线程。线程和同一进程下的其他线程共享进程的资源,线程没有独立的地址空间,一个线程崩溃,整个进程就会崩溃。
线程与队列的关系:
队列是保存和管理任务,线程是在队列中读取任务执行。可以说线程执行队列调度的任务。
为什么要在主线程刷新UI?
因为UIkit不是线程安全的,如果多线程同时刷新UI,会造成资源抢夺、读写问题、UI异常、崩溃等。
队列:
队列是一种先进先出的数据结构,是一种特殊的线性表。
串行队列:只开启一个线程,每次只有一个任务可以执行,一个任务执行完毕才能执行下一个任务。主队列就是一种串行队列,主队列的任务在主线程执行。
并发队列:开启多个线程,让多个任务同时执行。全局队列是一种并发队列。
任务:
同步任务:不具备开启线程的能力。一个任务执行完,才会执行下一个任务。
异步任务:具备开启线程的能力,不会阻塞线程。
同步执行 + 串行队列:顺序执行
同步执行 + 并发队列:顺序执行
异步执行 + 串行队列:顺序执行
异步执行 + 并发队列:开启多线程
同步执行 + 主队列:死锁
异步执行 + 主队列:不会开启多线程