一文搞懂进程、线程、协程以及并发、并行、串行的概念

news2024/10/22 2:04:08

什么是进程?

进程是资源调度的最小单位,操作系统通过进程来管理计算机的资源,如CPU、内存、磁盘等。通俗说法:可看做是正在执行的程序如QQ.exe

什么是线程?

线程是操作系统的最小执行单位,是进程中的一个实体,是CPU调度和分派的基本单位。一个进程可以包含多个线程,每个线程都可以独立执行不同的任务,但它们共享进程的资源

同一时刻,一个CPU核心只能运行一个线程,也就是CPU内核和同时运行的线程数是1:1的关系,
也就是说8核CPU同时可以执行8个线程的代码。

什么是纤程(协程)?

底层角度:

1. 纤程可以在一个线程内部创建多个纤程,这些纤程之间可以共享同一个线程的资源

2. 纤程是在同一个进程内部运行的,不需要操作系统的介入,可以在用户空间内实现协作式多任务处理。因此纤程的创建和销毁开销很小,可以更高效地利用系统资源。

通俗的说,如果线程是饭店的饭桌,协程就是座椅。Java19才支持虚拟线程(纤程)或者使用第三方协程库quasar。

总结:

  1. 先有进程,然后进程可以创建线程,线程是依附在进程里面的,线程里面可以包含多个协程
  2. 进程之间不共享全局变量,线程之间共享全局变量,但是要注意资源竞争的问题。

并发

通俗:并发是多个客户在同一时间段内不约而同来到饭店,但是都想快点上菜,却只有一个厨师,厨师想了个办法,给每一桌上一个菜,然后在轮流炒第2、3......个菜,达到雨露均沾,不至于后面来的客户闹情绪。

底层:在操作系统中,安装了多个程序,并发的是同一时间段内宏观上有多个程序同时运行,这
在单CPU 系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的交替运行,只不过
是给人的感觉是同时运行,那是因为分时交替运行的时间是非常短的

并行

通俗:并行是多个客户在同一时刻一起来到饭店,没人愿意排队,好办!饭店有多个厨师,每桌安排一个厨师,高档饭店就是好!

底层:在 多核 CPU 系统中,这些同一时刻的程序可以分配到多个处理器上(CPU),实现多任
务 并行执行,即利用每个处理器来处理一个可以并发执行的程序,这样多个程序便可以同时执
行。目前电脑市场上说的多核CPU,便是多核处理器,核越多,并行处理的程序越多,能大大
的提高电脑运行的效率。
注意:单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并发运行。同理,线程也是一样的,从宏观⻆度上理解线程是并行运行的,但是从微观⻆度上分析却是串行运行的,即一个线程一个线程的去运行,当系统只有一个CPU时,线程会以某种顺序执行多个线程,我们把这种情况称之为线程调度。

串行

通俗:按照客户下单顺序,先到先得,厨师按菜单顺序炒菜。但是后面的客户就要等得比较久了,如果第一个客户吃的是满汉全席,后面的客户可能就不想等了。

底层:如单核CPU,同一时刻只能运行一个程序,如果存在多个程序,需要按照先后顺序执行。我打开qq后,不能再同时打开微信,只能等qq执行完成(关闭)后才能打开微信, 线程的串行亦是如此, 一次只能执行一个线程代码指令, 其他线程需要排队等待。

总结:

并发Concurrent:指应用能够交替执行不同的任务,比如单CPU核心下执行多线程并非是同时执行多个任务,如果你开两个线程执行,就是在你几乎不可能察觉到的速度不断去切换这两个任务,已达到"同时执行效果",其实并不是的,只是计算机的速度太快,我们无法察觉到而已。

并行Parallel:指应用能够同时执行不同的任务,例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行。

两者区别:并发是交替执行,并行是同时执行,串行是同时执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213605.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql集群-主库从库配置--主从库分离

mysql集群 为什么要做主从库分离? 怎么进行分离? 设置2个数据库,为主库从库,主库存储,从库查询 怎么设置? 在你原本的配置yml文件中主库的ip是多少,从库是多少,都要和数据库的ip 一…

rom定制系列------小米5x_miui12安卓11定制固件界面预览 小米5x第三方固件

💝💝💝此固件来源于客户卡刷固件定制。客户需要修改为线刷。并且修改账号锁功能。 可以让客户使用官方平台批量进行刷写。方便操作。 定制机型以及功能预览💝💝💝 小米5x版本miui12.5.8安卓11固件。此机型…

每日OJ题_牛客_神奇数_数学_C++_Java

目录 牛客_神奇数_数学 题目解析 C代码 Java代码 牛客_神奇数_数学 神奇数_牛客笔试题_牛客网 (nowcoder.com) 描述: 给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:存在不同位置的两个数位,组成一…

MySQL表的基本查询上

1,创建表 前面基础的文章已经讲了很多啦,直接上操作: 非常简单!下一个! 2,插入数据 1,全列插入 前面也说很多了,直接上操作: 以上插入和全列插入类似,全列…

树莓派使用:YOLOv8环境搭建困难--已解决

1.安装所需包失败 在尝试运行 sudo pip3 install numpy时遇到的错误提示与系统环境管理方式有关,这是因为Python环境是由操作系统管理的,因此不允许直接通过 pip 进行系统范围的包安装。这种限制是为了防止不兼容的包破坏系统的稳定性。 解决方案: 使用…

向量的外积

向量的内积大家都很熟悉了,计算两个向量之间的夹角时就用到了向量的内积。 向量的内积是一个标量, 它的值是一个向量在另一个向量上投影的长度。 1 定义 向量的外积也叫 矢积, 向量积, 叉积。 向量的外积还是一个向量&#xff…

pyserini安装使用

目录 代码 安装 使用 msmarco-passage bm25 代码 git clone https://github.com/castorini/pyserini.git --recurse-submodules pyserini/tools为submodules,地址:anserini-tools 安装 https://github.com/castorini/pyserini/blob/master/docs/…

牛客编程初学者入门训练——BC53 判断是元音还是辅音

BC53 判断是元音还是辅音 描述 KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音&#x…

【JAVA毕业设计】基于Vue和SpringBoot的历史学习网站

本文项目编号 T 004 ,文末自助获取源码 \color{red}{T004,文末自助获取源码} T004,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

图示详解OpenEuler下Samba多用户身份验证配置、测试

前言 前文《图例详解OpenEuler下Samba安装、配置和测试》已对Samba服务的工作原理、安装、配置和测试,做了系统的介绍,并对匿名用户的访问samba服务器做了配置,相必读者已对samba服务的流程有了初步、系统的了解,本文在以上基础上…

如何在ActivityCommunication中整合多个Activity(实操)

下面举例添加一个WebViewIntentDemoActivity 第一步:先将java文件导入集合项目中 第二步:创建新的main界面,导入需要增加的Activity界面(记得与前面的命名区分开) 第三步:在集合Activity界面中添加一个新按…

docker删除容器要怎么操作?如何保障容器安全!

对于新手来说很多用户不清楚docker删除容器要怎么操作?在执行删除操作前,请确保不需要保留容器的任何数据或状态信息,或者已经备份了重要数据。要删除Docker容器和镜像,可以使用以下命令。今天就跟着小编一起来了解下docker删除容…

Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法)

Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法) requests-pkcs12 PyPI python中如何使用requests模块下载文件并获取进度提示 1、GET方法 1.1、调用 # 下载客户端(GET)def download_client_get(self, header_all):try:url = self.host + "/xxx/v1/xxx-mod…

基于SpringBoot+Vue的扶贫助农有机农产品商城【源码+安装+讲解+售后+开题+答辩PPT】

【1】系统介绍 ① 背景 在快速发展的中国,农村经济虽受益于国家整体繁荣,但仍面临基础设施落后、信息闭塞及销售渠道狭窄等挑战,阻碍了优质农产品的市场拓展,影响农民收入。互联网与电商的兴起,为解决这一难题提供了…

SpringBoot项目如何导入外部jar包:详细指南

在开发SpringBoot项目时,我们经常需要引入一些外部的jar包来增强项目的功能。这些jar包可能不是Maven中央仓库中的,或者我们想要使用特定版本的jar包。本文将详细介绍如何在SpringBoot项目中导入外部jar包,并确保项目能够正确地打包和运行。 …

基于SpringBoot的高校竞赛管理系统:设计与实现

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理高校学科竞赛平台的相关信息成为必然。开发…

【Linux】命令行下的“复制”操作||复制文件和路径

拷贝(cp,copy) cp命令来自于英文单词"copy"(复制)的缩写,用于将一个或多个文件或目录复制到指定位置。 cp [参数] 源文件 目标文件 参数: 致谢:Linux常用命令大全(手册) – 真正好用的Linux命令在线查询…

算法系列之十二:多边形区域填充算法--扫描线填充算法(有序边表法)

二、扫描线算法(Scan-Line Filling) 扫描线算法适合对矢量图形进行区域填充,只需要直到多边形区域的几何位置,不需要指定种子点,适合计算机自动进行图形处理的场合使用,比如电脑游戏和三维CAD软件的渲染等等…

【洛谷】- P1923 【深基9.例4】求第 k 小的数

文章目录 一、 P1923 【深基9.例4】求第 k 小的数二、思想方法2、代码3、细节 一、 P1923 【深基9.例4】求第 k 小的数 题目: 二、思想方法 首先我们来看核心代码,也就是通过快排,将K的位置找出 void my_sort(int arr[],int left,int right,…

170页满分PPT | 某大型集团信息安全管理体系优化咨询项目

某大型集团信息安全管理体系优化咨询项目是一项全面的规划报告,旨在根据ISO 27001:2013信息安全管理国际标准,对甲方集团的信息安全现状进行调研分析,并提出优化建议。该报告共170页可编辑PPT格式,详细列出了信息安全建设的各个阶…