• 并发,并行,串行,同步,异步,进程,进程池,线程,线程池


    并发,并行,串行,同步,异步,进程,进程池,线程,线程池

    进程

    什么是进程:

    • 开发写的代码称之为程序,将程序运行起来,就是进程

    进程是申请一块内存空间,将数据放在内存空间中去,是申请数据的过程中最小的管理单元。

    • 进程是线程的容器

    程序与进程的区别

    • 程序是数据与指令的集合,是一个静态的概念,也就是一堆代码,是长期可以保存在系统中
    • 进程是程序运行的过程,是一个动态的概念,进程存在着生命周期(进程会随着程序的终止而销毁)不会永久保存在系统中

    进程之间交互

    • 进程之间通过TCP/IP端口实现

    线程

    什么是线程

    • 线程是操作系统能够进行运算调度的最小单位
    • 它被包含在进程之中,是进程中的实际运作单位
    • 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程可以并行执行不同的任务

    线程是进程的流水线,只用来执行程序,而不涉及到申请资源,是线程的实际执行者,最小的执行单元

    线程之间的交互

    • 多个线程共享同一块内存,通过共享的内存空间来进行交互

    线程与进程的关系

    例子

    打开微信这就是开启了一个进程;之中的扫一扫,添加好友,设置…这些操作就是进程

    进程包含线程,线程是进程的子集

    进程是线程的容器

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-diOY1Wdf-1669114935085)(并发,并行,串行,同步....assets/image-20221122155550974.png)]

    在这里插入图片描述

    总结

    • 进程:系统中运行的一个应用程序,程序一旦运行起来就是进程。资源分配的最小单位
    • 线程:系统分配处理器时间资源的基本单元,进程之内独立执行的一个单元执行流。程序执行的最小单位
    • 线程要分配一大部分的内存,而线程只需要执行分配一小部分栈即可
    • 一个程序至少有一个进程,一个进程至少有一个线程
    • 一个线程可以创建和撤销另一个线程,同一个进程中的多个条线程间可以并发执行

    并发

    CPU单核,多条线程同一时间交替执行

    在这里插入图片描述

    并行

    cpu多核,线程同时执行

    并行必须有多核才能实现,否则只能实现并发

    在这里插入图片描述

    串行

    一个程序执行完,在执行下一个程序

    在这里插入图片描述

    任务运行的四种状态

    线程在运行的过程中不断的改变其运行状态

    一个运行的进程必须具有三种状态:就绪态,运行态,阻塞态

    就绪态(Ready)

    • 当进程一分配到除CPU以外的所有必要的资源后,只要再获得CPU,便可执行程序,进程这时的状态就称为:就绪态。
    • 在一个系统中处于就绪态的进程可能有多个,通常将他们排成一个队列,称之为:就绪队列

    运行态(Running)

    • 当线程已经获得CPU操作权限,其程序正在运行,称为:运行态
    • 当单核操作系统中,只有一个线程处于运行态,多和操作系统有多个进程处于运行态

    阻塞态(Blocked)(sleep)

    • 正在执行的进程,由于等待某个事件而无法执行时,便被操作系统剥夺了CPU的操作时间,称为:阻塞态
    • 引起阻塞的原因多种,例如:等待I/O操作,更高优先级的任务抢走了CPU权限等

    进程三种状态间的转换

    一个进程在运行期间,会不断地在一种状态切换到另一种状态

    一个进程可以多次处于就绪态和运行态,也可以多次处于阻塞态

    在这里插入图片描述

    就绪态->运行态

    处于就绪态的进程,当进程调度程序为之分配了CPU的时间片,该进程就会由就绪态转为运行态

    运行态->就绪态

    处于运行态的进程在进程过程中,因为分配的时间片用完了,于是失去了CPU的使用权限,运行态就会重新转为就绪态

    运行态->阻塞态

    正在运行的进程由于遇到I/O操作或更高优先级的任务抢走CPU使用权限而无法继续执行,便从运行态转为阻塞态

    阻塞态->就绪态

    处于阻塞态的进程,若其等待的事情已经处理完,于是进程从阻塞态转为就绪态

    任务提交的两种方式

    同步

    • 发送方发送数据后,等待接收方回响应后才发下一个数据报的通讯方式
    • 同步是指两个程序的运行是相关的,其中一个线程在阻塞需要等待状态,另一个线程才执行
    例子
    • A同学叫B同学吃饭,B同学听到后就会与A同学去吃饭,如果没有听到,A同学则会不停的叫,知道B同学听到,才去吃饭
    • 打电话,双方同时进行,不能再打该第三者

    异步

    • 发送方发送完收据后,不等接收方回应,就可发送下一条数据
    • 异步是两个线程毫无关系,自己运行自己
    例子
    • A同学叫B同学吃饭,然后A同学去吃饭,B同学收到消息后自行吃饭
    • 发消息,和A客户发完消息后,不等回应,再想B客户发送消息

    进程池

    什么是进程池

    • 进程池就是资源进程,管理进程组成的技术的应用。

    为什么要有进程池

    • 忙时会有很多进程任务需要被执行,闲时可以没有线程任务
    • 当有很多线程时,难道需要我们去创建对应个数的线程吗
    • 创建线程,销毁线程是需要时间的
    • 开启很多线程时,操作系统也不可能都让他们同时执行,这样就会影响程序的效率

    线程池的概念

    • 定义一个池子,在里面放入固定数量的进程,有需求,则拿池中的进程来处理任务
    • 等处理完毕,进程并不关闭,而是将进程重新放回池中等待指令
    • 如果需要执行的进程大于池中的进程,则需要执行的任务等待之前的进程结束任务回到池中,拿到空闲进程来执行
    • 进程池中的进程数量是固定的,则同一时间最多有着固定数量的进程同时执行
    • 进程池不会增加操作系统的调用难度,还节省了进程的开,关所需时间,

    线程池

    什么是线程池

    一种多线程的处理方式,处理过程中可以将线程添加到队列中,然后在创建线程后自动启动这些线程,

    为什么要有线程池

    • 可以根据系统的需要和硬件环境灵活的控制线程的数量,并且可以对所有线程进行统一的管理和控制,从而提高系统的的运行效率,降低系统运行压力,
    • 线程池中的线程可以复用,可以控制最大并发数,可以管理线程

    线程池的概念

    • 线程与任务分离,提高线程重用性

    • 控制线程并发数量,降低服务压力,统一管理所有线程(提高线程管理性)

    • 提高系统响应速度

    • 重复利用已经存在的线程,减少创建和销毁时对资源的占用(降低资源消耗)

    • 当有任务执行时,不需要等待线程创建,直接执行任务(提高响应速度)

  • 相关阅读:
    英特尔会是下一个诺基亚吗?
    Ubuntu20.04下载opencv3.4--未完善
    IPEmotion的NVH噪声测试模块——坎贝尔图
    云原生下,中国联通如何建设数字化实时监控体系?
    投入产出公开数据集:世界投入产出表(1995-2014)、全国投入产出表(1990-2018)、分省市投入产出表(1997-2017)
    深入了解大数据安全组件Apache Ranger
    STM32CubeIDE报“xxx is not implemented and will always fail”解决方法
    linux 火狐浏览器报错Firefox is already running, but is not responding
    谣言检测——《MFAN: Multi-modal Feature-enhanced Attention Networks for Rumor Detection》
    在腾讯云安装docker及zookeeper和dubbo
  • 原文地址:https://blog.csdn.net/qq_44715376/article/details/127988154