一、线程与进程的前世今生
1.何为进程?
指的是系统中正在运行的一个应用程序!即是一个进程。
例如的打开的QQ、微信,都是一个进程。并且在系统内存中占用资源。
图片1.png
直白了讲,你打开手机上装的一个APP,系统就会在内存中开启一个进程,分配一个内存空间用来运行这个APP。这就是为什么打开APP多了,系统会卡的原因。你手机系统内存3G,例如系统软件占用1G,打开一个QQ占用100M,你打开了类似的APP总大小接近2G时,内存快存不了,不卡才怪呢!你说你没有多打开APP,也会卡?为什么呢,这和另外一个问题有关,线程。
2.哪来的线程?
我们知道进程是在系统内存中运行着的应用程序。打开应用之后,你可能会点击这个按钮播放视频,点击那个按钮下载音乐,这些事情谁去做呢,当然不全是进程去做了,更多时候它会指派小弟去做,这个小弟就是线程。
线程就是为了执行任务而存在的。每个进程都默认有一个小弟(主线程)。然后任务多了,就会去系统内存中申请创建新的小弟。看下图的火狐浏览器就知道了。
图片2.png
通过上图可以看出来,线程越多占用的内存一定不会少,为什么有这么多的线程呢,因为我在火狐浏览器中开了N个标签页,每个标签页都需要一个线程,就相当于你手机上虽然开的进程(应用)少,但是开启的任务多,一样会占用很多的内存。所以你的手机卡,一定是进程中线程占用的内存过大,可运行内存变小了。
so 善待你的手机,少开一些应用,善待你的生活,请远离你的手机!
3.线程的特点
a.线程中的任务的执行是串行的。
串行,一个接一个的执行,就是一个任务完成之后执行另外一个。
同一时间内,一个线程只能执行一个任务。
因此也可以称作线程是进程中的一条执行路径。
图片3.png
4.什么又是多线程呢?
a,顾名思义,开启多条线程,可以并行(同时)执行多个任务。
b,多线程的原理
一个CPU,同时只能执行一个线程,只有一条线程在执行。多线程并发(同时)执行,其实是CUP在多个线程间进行频繁调度,切换的足够快,给用户造成一种同时执行的假象。
c,执行的方式
1>并行执行,也称为同时执行(如图4)。
其实是CPU在多个线程间不停地切换,因为切换的足够快,看起来像是多个任务同时执行一样。
2>串行执行,一个执行完成之后再执行另外一个。
图片4.png
5.线程的优缺点
1>优点
a,可以适当地提高程序的执行效率。
例如只有一个线程,做下载任务时,下载完成之后,才可以做其他操作,如果是多个线程,可以一边下载,一边做其他操作,例如看视频。
b,可以提高资源的利用率(内存、CPU)。
利用闲置的内存和CPU资源,开启多个线程,执行多个任务。
c,可以提高用户体验。
将更多耗时的任务分摊给子线程去处理,主线程可以持续进行其他任务。例如用户在下载时,边下载(子线程执行),边浏览其他内容(主线程)。
2>缺点
a,开启线程是需要开销的
iOS中一个线程占用内核数据结构2个,栈空间,主线程占用1M,子线程占用512KB,创建一个线程大约90毫秒的时间)。
b,开启过多线程,会引起系统卡顿,也更耗电。
开启N个线程(很多的线程),会使CUP在多个线程直接频繁的切换,造成机器卡顿,同时也更耗电。
网友评论