ios 进程、 线程、多线程

来源:互联网 发布:流量推广软件 编辑:程序博客网 时间:2024/05/17 13:10

线程和进程,有时候真的傻傻分不清楚。根据自己的工作经验简单说说。
1、什么是进程
直接点: 计算机或者手机上正在运行的一个程序,每个进程之间都是相互独立的。
例如:你在电脑同事打开QQ音乐和X-code
2、什么是线程
直接点:打开QQ音乐,一般下载音乐,一边听音乐,那么下载就是一个线程。
一个进程想要执行任务,例如进行一些耗时的操作(请求数据等),那必须得有线程。 一个进程至少有一个线程,即主线程(或者叫UI线程也可以)。线程是进程的基本执行单元。
2.1线程的串行
1个线程中任务的执行是串行的,也就是说,如果一个线程要执行多个任务,那么执行这些任务必须是有序去执行的。
3、多线程
前面已经讲到,一台电脑,一个手机可以同时打开多个应用,这个叫进程。一个应用可以同时开启多个子线程去执行响应的任务,例如,边听音乐边下载,这个叫多线程。开启的线程除了主线程外,开启的线程多叫做子线程(也就是NSThread、GCD、NSOperation)。
多线程怎么工作的呢?
同一时间,CPU只能处理1条线程,只有1条线程在工作,多线程并发同时执行,其实是CPU快速地在多条线程中切换,如果CPU调度的线程时间过快,就造成了多线程并发执行的假象。
那么,线程一多,会怎么样呢?
一个人什么事情都要忙,不累死效率也下降。毋庸置疑,CPU在多个线程中不断切换,会消耗大量的CPU资源,每条线程被调度执行的频率也会下降。
3.1. 多线程的优缺点
(1)优点:适当提高程序的运行效率
(2)缺点: 开启线程会占用一定的控件(主线程占用1M,子线程占用512KB),如果开启大量子线程,会占用大量的内存空间,降低程序的性能。
4、多线程在ios开发中的运用
主线程: 一个应用开始启动后,默认开启一条主线程。主线程有仅只有一条。你可以理解位就是视图控制器声明周期一些关联的方法。
一般不在主线程上执行耗时的操作.例如:请求数据,开启定时器等
如果将这些耗时操作放到主线程执行,那么第一最明显的是UI的流畅度会造成“卡”,用户体验不好。

结合多线程举个例子,也算得上对tableview的一种优化
对于一张表,类似美团店的列表,列表上面有店的图片,涉及到店图片的下载,如果图片很大,没经过处理,那么下载在滑动的时候就会卡。结合上面的解决办法就是:开启子线程去请求图片,那么如果用户滑得飞快,开启那么多线程,还是快开,还是会消耗CPU的资源。最好的解决思路就是:tableview是继承scrollview,当用户滑动的结束的过程,不开启线程,当用户滑动结束的时候,才去开启子线程请求图片。这样一来,子线程少了。

0 0