进程
什么是进程
进程是值在系统中正在运行的一个应用程序。
-
每个进程之间是独立的,每个进程均运行在其专用切受保护的内存空间内。
比如同时打开QQ、Xcode,系统就分别启动2个进程。
通过“活动监视器”可以查看Mac系统中所开启的进程。
线程
什么是线程
- 1个进程想要执行任务,就必须得有线程。(一个进程至少有一条线程)
- 线程是进程的基本执行单元,一个进程的所有任务都是在线程中执行的。
-
比如使用酷狗播放音乐、使用迅雷下载电影,都需要在线程中执行。
线程的串行
- 1个线程中的任务是串行执行的。
- 如果在一个线程中执行多个任务,那么只能按顺序一个一个的执行。
-
比如在一个线程中下载3个文件。(分别为文件A、文件B、文件C)
多线程
什么是多线程?
- 1个进程中可以开启多条线程,每个线程并行(同时)的执行不同的任务。
- 进程---->车间,线程--->车间工人。
- 多线程可以提高技术可以提高程序的执行效率。
-
比如开辟3条线程分别下载3个文件(文件A,文件B,文件C)。
多线程原理
多线程原理
- 同一时间,CPU只能处理一条线程,只有一条线程在工作。
- 多线程的并发执行,其实是CPU快速在多条线程之间切换(调度)。
- 如果CPU调度线程时间足够快,就会造成多线程并发执行的假象。
- 思考,如果线程足够多,会发生什么?
- CPU会在N多线程间调度,CPU会累死,消耗大量的CPU资源。
- 每条线程被调度执行的频率会降低(线程的执行效率降低)。
-
以下为3条,然后100条呢?
多线程的优缺点
多线程的优点
- 适当提高程序的执行效率。
- 能适当提高资源利用率。
多线程的缺点
- 开辟线程需要占用一定的内存空间(默认情况,主线程占1M,子线程占用512KB),如果开辟大量线程,会占用大量的内存空间,降低程序的性能。
- 线程越多,CPU在调度线程上的开销越大。
- 程序设计更复杂,比如线程之间的通信、多线程数据共享。
多线程在ios开发中的应用
什么是主线程?
- 一个iOS程序运行后,会默认开启1条线程,称为主线程或者UI线程。
主线程的主要作用
- 显示、刷新UI界面
- 处理UI事件(比如点击事件,滚动事件,拖拽事件)
主线程的使用注意
- 别将耗时的操作放到主线程中,耗时操作会卡住主线程,严重影响UI流程度,给用户一种卡的坏体验。