是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能
一、名词解释
进程:是计算机中的程序关于某数据集合上的一次运行活动,可以理解成一个程序的运行
线程 :有时被称为轻量级进程,是程序执行流的最小单元。
队列:任务会存放在队列中,按照先进先出的模式读取任务 队列分为串行队列和并发队列
1.串行队列:任务顺序执行 执行完成一个任务后才能执行下一个任务
2.并行队列:可以让多个任务同时执行
另:
3.主队列 :是一个串行队列,刷新UI只能在主队列中进行
二、多线程优缺点
优点
*使用线程可以把占据时间长的程序中的任务放到后台去处理
*程序的运行速度可能加快
*在一些耗时操作上如文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等等。
缺点
*如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换。
*更多的线程需要更多的内存空间。
*线程可能会给程序带来更多“bug”,因此要小心使用。
*线程的中止需要考虑其对程序运行的影响。
*通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生。
三、队列和同步异步任务的组合
同步执行下 不管是并发队列还是串行队列都不会开辟新的线程 都在主线程中执行
异步执行下 并发队列会开辟多条线程同时执行任务 串行队列只会开辟一条新的线程 顺序执行任务
具体如图所示
四、GCD的一些常用方法
(1)开辟子线进行耗时操作 并在主线程刷新界面(比较常用的例子是加载图片,现在我们通常使用SDWebimage,当我们要读写较大文件时情景类似)
(2)定时器(让方法延迟几秒执行)
(3)让代码只执行一次
(4)栅栏
(5)GCD队列组
网友评论