一、进程
进程是指在系统中正在运行的一个应用程序,每个进程之间都是独立的,每个进程都运行在其专用且受保护的内存空间内
二、线程
一个进程要想执行任务就必须要有线程,每一个进程至少都要有一条线程。
线程是进程的基本执行单元,一个进程的所有任务都在线程中执行。
线程又分为主线程和子线程:
主线程:一个ios程序运行后,默认会开启一条线程,称为“主线程”或“UI线程”,ios上任何UI的操作都在主线程上执行
子线程:除主线程外进程中得其他线程,程序中一般都将耗时的操作添加到子线程中,以避免卡住主线程。
三、线程的串行
一个线程中的任务执行都是按顺序执行的,也就是串行,假如要在一个线程中执行多个任务,那么就只能一个接一个按顺序执行这些任务。
同一个时间内一个线程就只能执行一个任务。
四、多线程
一个进程中可以开启多条线程,每条线程可以并发(同时)执行不同的任务。
多线程技术可以提高程序的执行效率。
例如有一款软件有个需求,需要在网络上下载3个文件,那么就可以分别开3条子线程在后台并发执行,而主线程可以不受影响的接受用户的请求
五、多线程原理
(1)、同一时间,CPU只能处理一条线程,只有一条线程在执行
(2)、多线程并发执行其实是CPU在多条线程之间快速的进行切换调度
(3)、如果CPU切换的时间足够快,就会造成多条线程并发执行的假象
(4)、如果线程过多那将会消耗大量的CPU资源,每条线程被调度执行的频次也会降低,这样就会造成“卡”的现象。
六、多线程的优缺点
优点:
(1)、能适当提高程序的执行效率
(2)、能适当提高资源(内存和CPU)利用率
缺点:
(1)、默认情况下,每一条线程都占用512K,线程所占用的大小可以修改,ios8以前的版本(具体忘记是哪个版本了)主线程是1M,子线程是512K,且大小不能修改
(2)、线程越多,CPU在线程调度上德开销就会越大
(3)、是程序设计更加复杂,比如线程间通信与多线程共享