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

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

进程

什么是进程:

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

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

  • 进程是线程的容器

程序与进程的区别

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

进程之间交互

  • 进程之间通过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客户发送消息

进程池

什么是进程池

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

为什么要有进程池

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

线程池的概念

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

线程池

什么是线程池

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

为什么要有线程池

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

线程池的概念

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

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

  • 提高系统响应速度

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆卿之

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值