基础之 进程和线程
什么是进程?
- 进程是指咋系统中正在运行的一个应用程序
- 每个进程之间是相互独立的,每个进程都运行在其专用且受保护的内存空间内
什么是线程?
- 一个进程想要执行任务,必须得有线程(每个进程至少要有一个线程)
- 一个进程(程序)的所有任务都在线程中执行
线程中的串行
- 1个线程中任务的执行是串行的
- 如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务
- 也就是说,在用一时间内,1个线程只能执行1个任务
进程和线程的比较
- 线程是CPU调用(执行任务)的最小单位
- 进程是CPU分配资源和调度的单位
- 一个程序可以对应多个进程,一个进程中可以有多个线程,但至少有一个线程
- 同一个进程内的线程共享进程的资源
- 打比方车间就是进程 车间内的工人👷就是线程
多线程
- 一个进程中可以开启多线程,每条线程可以并行(同时)执行不用的任务
多线程的原理
- 同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)
- 多线程并发(同时)执行,其实是CPU快速的在多条线程之间调度(切换)
- CPU调度线程的时间足够快,就会造成了多线程并发执行的假象
- 如果线程非常多,会造成CPU在N多线程之间调度,CPU会累死,消耗大量的CPU资源,会降低线程运行效率
- 一般线程开3-5条
多线程的优点
- 提高程序的执行效率
- 能适当的提高资源利用率(CPU,内存利用率)
- CPU一次只能处理一条线程,比如说,处理一条线程时利用率是20%,那么多线程就会将CPU的利用率完全用到。
多线程的缺点
- 创建线程时需要开销(空间)的。iOS 主要成本:创建线程大膏药90毫秒的创建时间,栈空间(子线程512kb,主线程1MB),内核数据结构(1kb左右)
- 如果大量开启线程,会降低程序的性能。
- 线程越多,CPU在调度线程上的开销就越大 (程序卡顿,运行不流畅)
- 使程序设计更加复杂:比如线程之间的通信。多线程之间的数据共享。
主线程做UI处理 子线程做耗时操作。
浙公网安备 33010602011771号