文章目录
🚠一、线程与多线程
线程可称为轻量级进程
如果把进程想象成工厂,线程就是工厂中的"流水线"
上图就是有两个进程,进程里面分别有一个线程~
但其实这样收益比较低,因为建两个工厂需要两块地,地多贵啊~
完全可以一块地放两个(或者多个)流水线嘛~
这样就是一个进程中有两个线程了~
也就是多线程~
线程数目不是越多越好,CPU核心数是有限的,当线程数目达到一定程度的时候,CPU核心数已经被吃满了!!此时继续增加线程,也无法再提升效率了~反而会因为线程太多,线程调度开销太大,影响了效率
!
💦比如一个工厂的地方最多只能把流水线放满,再多就放不下了,反而会因为太拥挤而导致各个流水线之间相互影响!
❓如果CPU是6核心,此时6个线程就是吃满了吗?
不一定,一个线程可能在占用CPU,也可能在等待~
另外,现代的CPU都有"超线程技术",一个核心可以并行跑两个线程(比如12核24线程)
🚠二、多线程的优点
💗使用多线程:
- 能够充分利用多核CPU,能够提高效率~
- 只是创建第一个线程的时候,需要申请资源,后续再创建新的线程,都是共用同一份资源,节省了申请资源的开销
销毁线程的时候,也只是销毁到最后一个的时候,才真正的释放资源
前面的线程销毁,都不必真正释放资源
操作系统内核,是通过PCB来描述进程的~~
更准确的说法 : 是一组PCB来描述一个进程,每个PCB对应一个线程
一个进程至少有一个线程,也可以有多个~
这一组PCB上的内存指针,和文件描述符表,其实是同一份~
而状态,上下文,优先级,几张信息,则是每个PCB(每个线程)自己有一份
🚠三、进程与线程的区别
进程是 资源分配的基本单位
线程是 调度执行 的基本单位
❗ ❗面频面试题(面试必考):
谈谈进程和线程之间的区别?
- 进程包含线程
- 线程比进程更轻量,创建更快,销毁更快
- 同一个进程的多个线程之间共用同一份内存/文件资源,而进程和进程之间则是独立的内存/文件资源
- 进程是资源分配的基本单位,线程是调度执行的基本单位
- 线程之间可能会相互影响到.
如果两个线程同时修改同一个变量,容易产生"线程不安全"的问题- 如果某个线程出现异常,并且异常没有处理好的话,整个进程都会随之崩溃!!这个时候后续其他线程自然难以进行运行