当不希望 操作被中断的时候 就会用到 多线程
当用户在下载资源,进行图像处理,耗时数据处理等任务时,往往希望
操作这个任务的时候 其他操作不会被中断, 这时候就会用到多线程
在单线程中一个线程只能执行一个任务,一个任务处理不完另一个任务就不能开始,这样会影响用户体验
多线程 :每个应用程序的内部,都会存在一个或多个执行的线程。它同时或者一个几乎同时执行不同的操作
每个系统运行的应用程序都是一个进程 每个进程里面都包含一个或多个线程。
线程是一组指令的集合,程序中一个单一的顺序控制流程,是一个程序中独立运行的片段
程序运行后,系统会创建一个叫做主线程的线程,所有的UI控件都必须运行在主线程中,所以也有人叫它UI线程
如果把所有的任务都放在主线程中,容易造成UI阻塞
多线程:在同一个应用程序中,同时运行多个线程,完成不同的工作,叫做多线程
ios中有几种多线程方式:
iOS中有3种多线程策略供开发者使用:NSThread,NSOperation(基类,不可以直接使用, 只能使用它的子类),GCD
GCD 苹果推荐的一种实现多线程的方式
轻量级 :对系统框架的依赖性的程度
NSThread:是这三种策略里面相对轻量级的,需要自己去管理他的生命周期,以及线程之间的同步,线程共享同一应用程序的部分内存空间,他们拥有对数据相同的访问权限,所以得协调多个线程对同一数据访问,常用的做法是在访问之前加锁,这回导致一定的性能开销