线程与进程的区别与联系

发布于:2023-01-18 ⋅ 阅读:(435) ⋅ 点赞:(0)


🚠一、线程与多线程

线程可称为轻量级进程

如果把进程想象成工厂,线程就是工厂中的"流水线"
在这里插入图片描述
上图就是有两个进程,进程里面分别有一个线程~

但其实这样收益比较低,因为建两个工厂需要两块地,地多贵啊~
完全可以一块地放两个(或者多个)流水线嘛~
在这里插入图片描述
这样就是一个进程中有两个线程了~
也就是多线程~

线程数目不是越多越好,CPU核心数是有限的,当线程数目达到一定程度的时候,CPU核心数已经被吃满了!!此时继续增加线程,也无法再提升效率了~反而会因为线程太多,线程调度开销太大,影响了效率!

💦比如一个工厂的地方最多只能把流水线放满,再多就放不下了,反而会因为太拥挤而导致各个流水线之间相互影响!

❓如果CPU是6核心,此时6个线程就是吃满了吗?

不一定,一个线程可能在占用CPU,也可能在等待~
另外,现代的CPU都有"超线程技术",一个核心可以并行跑两个线程(比如12核24线程)

在这里插入图片描述

🚠二、多线程的优点

💗使用多线程:

  1. 能够充分利用多核CPU,能够提高效率~
  2. 只是创建第一个线程的时候,需要申请资源,后续再创建新的线程,都是共用同一份资源,节省了申请资源的开销
    销毁线程的时候,也只是销毁到最后一个的时候,才真正的释放资源
    前面的线程销毁,都不必真正释放资源

操作系统内核,是通过PCB来描述进程的~~
更准确的说法 : 是一组PCB来描述一个进程,每个PCB对应一个线程

一个进程至少有一个线程,也可以有多个~

这一组PCB上的内存指针,和文件描述符表,其实是同一份~
而状态,上下文,优先级,几张信息,则是每个PCB(每个线程)自己有一份

在这里插入图片描述

🚠三、进程与线程的区别

进程是 资源分配的基本单位
线程是 调度执行 的基本单位

❗ ❗面频面试题(面试必考):

谈谈进程和线程之间的区别?

  1. 进程包含线程
  2. 线程比进程更轻量,创建更快,销毁更快
  3. 同一个进程的多个线程之间共用同一份内存/文件资源,而进程和进程之间则是独立的内存/文件资源
  4. 进程是资源分配的基本单位,线程是调度执行的基本单位
  5. 线程之间可能会相互影响到.
    如果两个线程同时修改同一个变量,容易产生"线程不安全"的问题
  6. 如果某个线程出现异常,并且异常没有处理好的话,整个进程都会随之崩溃!!这个时候后续其他线程自然难以进行运行

在这里插入图片描述

总结

在这里插入图片描述

你可以叫我哒哒呀
非常欢迎以及感谢友友们的指出问题和支持!
本篇到此结束
“莫愁千里路,自有到来风。”
我们顶峰相见!