- 多线程在iOS开发中是一个比较常见也十分重要的一门技术,首先我们知道每一个程序运行都会开启一个进程,而一个进程想要执行任务,必须得有线程(每个进程至少需要一条线程),线程是进程最基本的执行单元,一个进程所有的任务都在线程中执行。
- 一个线程中的任务是串行的,如果一个线程中有多个任务,那么只能一个一个的按照顺序执行这些任务。
- 所谓多线程就是一个进程中开启多条线程,每条线程可以并行(同时)执行不同的任务,多线程可以提高程序的执行效率
多线程的原理:
同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。如果线程非常非常多,会发生什么情况?CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源每条线程被调度执行的频次会降低(线程的执行效率降低)
多线程优缺点:
优点:
- 能适当的提高程序的执行效率;
- 能适当的提高资源利用率(CPU,内存利用率)
缺点:
- 开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能
- 线程越多,CPU在调度线程上的开销就越大
- 程序设计更加复杂:比如线程之间的通信、多线程的数据共享
开启多线程方式
- Pthread 基于比较底层的C语言
- NSThread 基于OC语言,面向对象,可直接操作线程对象
- GCD 旨在替代NSThread ,充分利用设备的多核
- NSOperation 基于GCD,比GCD多了一些功能,添加线程依赖,取消或暂停线程