• 线程与进程的区别与联系



    🚠一、线程与多线程

    线程可称为轻量级进程

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

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

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

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

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

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

    在这里插入图片描述

    🚠二、多线程的优点

    💗使用多线程:

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

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

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

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

    在这里插入图片描述

    🚠三、进程与线程的区别

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

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

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

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

    在这里插入图片描述

    总结

    在这里插入图片描述

    你可以叫我哒哒呀
    非常欢迎以及感谢友友们的指出问题和支持!
    本篇到此结束
    “莫愁千里路,自有到来风。”
    我们顶峰相见!
  • 相关阅读:
    宿舍台灯什么光对眼睛好?推荐适合学生宿舍用的台灯
    [UML]类的关系与类图
    一文读懂GPTs的构建与玩法(GPTs保姆级教程)
    java 开发ide插件
    瘫痪小姐姐“自主”行走视频火了,曾借助轮椅完成舞蹈表演,网友:灵魂是战士...
    如何给PDF解密?建议收藏这些方法
    《数据安全法》出台一周年,看哪四大变化来袭?
    训练神经网络解决二分类问题的原理
    《golang设计模式》第二部分·结构型模式-04-装饰器模式(Decorator)
    【老生谈算法】matlab实现主成分分析算法——主成分分析
  • 原文地址:https://blog.csdn.net/m0_58437435/article/details/126328408