全栈杂谈第一期:什么是计算机中的并发

news2024/9/22 13:41:16

什么是计算机中的并发

计算机中的“并发”是一个听起来很复杂的词汇,但我们可以把它简单理解为“同时做很多事情”。想象一下你正在做晚饭:你可以在等水烧开的时候切菜,还可以在等待炖汤时洗碗。尽管你只有一双手,但通过合理安排时间,你可以看起来像是在同时完成多项任务。这就是“并发”的基本概念。

在这里插入图片描述

并发与并行的区别

在解释并发之前,我们需要了解另一个相关的词汇:“并行”。并发和并行有时会被混淆,但它们是不同的概念。

  • 并行:是指两个或多个任务在同一时刻真正地同时执行。想象一下,你有两个灶台可以同时用,一个在煮饭,另一个在煎鸡蛋。这两个操作是真正同时发生的,互不干扰。

在这里插入图片描述

  • 并发:并发并不一定要求任务在同一时刻执行。它更像是多个任务交替进行,比如你在一个灶台上先煮饭,然后趁着煮饭的时间去切菜,再回来搅拌锅里的饭。这些任务虽然不是严格意义上的同时进行,但它们是交替进行的,看起来像是同时进行的。

在这里插入图片描述

并发是两个队列交替使用一台咖啡机,而并行则是两个队列同时使用两台咖啡机。再用一个例子来解释:

  • 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
  • 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
  • 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

从上面的例子可以看出来,并发的关键就是需要能同时处理多个任务的能力,这个不一定是同时进行的。并行则关键是要能同时处理多个任务。二者的关键区别在于是否具备同时性。 这也很好的能在计算机上进行理解,在早期只有单核CPU的计算机上,随着系统CPU的时间片调度,系统可以支持并发和串行。而在目前多处理器的多核系统中,系统除支持并发与串行之外,还支持并行。

计算机中的并发是如何实现的

计算机中的并发通常通过操作系统和硬件的协作来实现。你可以把操作系统想象成一个非常高效的厨房主管,它会帮助你安排任务的顺序,并在你忙于一项任务时偷偷安排另一项任务。

在这里插入图片描述

多任务处理(Time-sharing)

大多数现代计算机可以同时运行多个程序。这是通过“时间片”来实现的,也就是操作系统把时间划分成非常短的片段(可能只有几毫秒),并让每个程序轮流使用CPU。虽然这些任务实际上是交替执行的,但由于时间片非常短,给人一种任务是同时进行的错觉。这就是多任务处理。

线程与进程

在计算机中,程序通常会被分成“进程”和“线程”来处理。

  • 进程:进程是程序运行时的实例,每个进程都有自己独立的内存空间。不同进程之间通常不会直接交互。
  • 线程:线程是进程内部的更小的执行单元。一个进程可以包含多个线程,这些线程可以共享进程的内存空间,这使得它们能够更加轻松地互相通信和共享数据。

通过使用多线程,一个程序可以看起来像是同时做多件事,例如,一个下载程序可以在下载文件的同时更新界面,给你实时显示下载进度。

在这里插入图片描述

同步与互斥

当多个进程或线程需要访问同一资源时,例如一个文件或一块内存,它们可能会产生冲突。为了避免这些冲突,计算机使用了一些机制来协调这些操作,其中最常见的两个概念是“同步”和“互斥”。

  • 同步:同步就像是一种协作协议,它确保多个线程在访问共享资源时能有序进行,而不会相互干扰。
  • 互斥:互斥是一种机制,确保在某一时刻只有一个线程可以访问特定资源。就像一间只有一把钥匙的房间,只有拿到钥匙的人才能进入,其他人必须等到钥匙归还后才能进入。

在这里插入图片描述

为什么并发很重要

并发使得计算机能够更加高效地利用资源。通过并发,一个计算机可以处理多个任务,即使这些任务本身可能比较小。比如,你可以在听音乐的同时进行文字处理,并且还能在后台下载文件。这一切都是通过并发来实现的。

此外,并发对于服务器和网络应用程序非常重要。比如,在处理网络请求时,服务器需要同时处理来自多个用户的请求,使用并发技术可以让服务器在短时间内处理更多的请求,从而提高效率和用户体验。

什么是高并发

高并发(Hight Concurrnet),从字面上来理解就是让单位时间同时处理任务的能力尽可能的高。对应到我们研发系统中,也就是说: 我们所开发的系统,要在短时间能能支持大量访问请求的情况。这种情况比如双十一活动,或者12306的抢票、以及秒杀等活动。 这要求我们的业务系统,在短时间内,尽可能多的接收来自客户端的请求,并做出准确的响应。

实际上,从另外一个角度考虑,我们所说的高并发,并行已经是其一个子集。毕竟,单个CPU或者单个系统节点的处理能力有限,而且成本昂贵, 我们需要通过多个节点,采用可扩展的方式,来实现支撑尽可能高的并发能力。而水平扩展的能力,实际上从另外一个角度来说,并行是提升系统并发能力的重要手段。

那么,既然是高并发,那么多高才算高呢?为了更好的对系统的高并发性进行评价,需要对如下指标进行了解:

  • 响应时间:系统对请求做出响应的时间,既然是高并发系统,这个响应时间就不可能太长,需要尽可能的短。
  • 吞吐量:系统单位时间内支持的最大请求数,当然越多越好。QPS是吞吐量最常用的量化指标之一。
  • 并发用户数:系统同时承载的正常使用功能的用户数量。如通信系统的同时在线人数。反应了系统的负载能力。这个指标当然越大越好。

重要参数如下:

  • QPS(TPS):每秒的Request/事务的数量
  • 并发数:系统同时处理的request/事务数量
  • 响应时间:平均的响应时间

QPS(TPS) = 并发数/平均响应时间

此外还有些相关的指标也需要了解:

  • PV(Page View): 页面访问量,即页面浏览量或点击量。
  • UV(Unique Visitor): 独立访客,统计1天内访问某站点的用户数。即按人按天去重。
  • DAU(Daily Active User):日活跃用户数量。通常统计一日(统计日)之内,登录或使用了某个产品的用户数,与UV概念相似。
  • MAU(Month Active User):月活跃用户数量,指网站、app等去重后的月活跃用户数量。

上述指标内容,主要是反映了高并发系统在高性能上的要求。做为高并发系统,需要实现的目标为:

  • 高性能:这体现了系统的并行处理能力,在有限资源的情况下,提升性能能节省成本。同时也给用户带来了更好的用户体验。
  • 高可用性:系统可以正常服务的时间,尽量避免系统的事故和宕机从而影响正常的业务。
  • 高扩展性:表示系统的扩展能力,系统具备更好的弹性,在流量高峰期能否短时间完成扩容,更平稳的承接流量峰值。

结语

尽管“并发”这个词在计算机领域中听起来很技术性,但它的核心思想并不难理解。通过类似于你在厨房里多任务处理的例子,我们可以看到并发实际上是让计算机看起来像是在同时做多件事的技术手段。理解了这些概念,不仅有助于更好地理解计算机的工作原理,还可以帮助你更有效地使用计算机资源。

欢迎关注公众号:“全栈开发指南针”
这里是技术潮流的风向标,也是你代码旅程的导航仪!🚀
Let’s code and have fun!🎉

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

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

相关文章

芋道cloud v2.2.0发布,支持模块选配,丢弃简易版

大家知道,芋道cloud拥有商城、CRM、ERP、微信相关等模块,很显然我们在日常开发中不可能一个项目同时拥有这么多模块。但是从gitee上获取代码的时候,只提供了简易版和完整版。简易版本只有最基础的功能,如果想要微信相关的模块&…

浅谈Llama3.1,从结构、训练过程、影响到数据合成

Llama3.1系列模型的开源,真让大模型格局大震,指标上堪比最好的闭源模型比如GPT 4o和Claude3.5,让开源追赶闭源成为现实。 这里给大家分享一篇俊林兄(知乎张俊林)的一篇解读,主要对LLaMA3.1的模型结构、训练…

RM双轴云台控制

RM机器人上最复杂的控制计构就是双轴云台了,赛场上的情况对双轴云台的控制稳定度与响应灵敏度双方面都提出了很高的要求,云台控制的好坏在一定程度上就能够代表一支队伍的实力。 双轴云台采用的控制算法依然是PID控制算法,关于PID控制算法的…

自动操作一键数据恢复/电子取证

对磁盘模拟扫描修复丢失数据的实验。 先挂载题目磁盘VHD。 Windows系统中打开磁盘管理,-操作,-附加VHD 可以看到已经加载出题目磁盘,接下来打开RStudio数据恢复软件,对其进行扫描。 操作找回丢失/被删除的数据 可以看到已经加载出…

Java入门:06.Java中的方法--进阶04

4方法递归 简而言之就是方法的自身调用。 也可以是方法组自身的调用 递归类似循环,可以实现功能的反复执行。在某些(算法)环境下,比使用循环更轻松。 递归的本质就是方法的不同调用,就会不同的产生栈帧压栈,栈空间有限&#xff…

一个可以搜索页面内超链接的HTML页面

页面效果如上&#xff0c;含有标题&#xff0c;搜索框和一些超链接&#xff0c;在搜索框输入一些文字可以在下方显示含有这些文字的超链接。这里的搜索不仅可以中文&#xff0c;还可以是英文&#xff0c;数字 HTML代码如下 <!DOCTYPE html> <html lang"en&qu…

笔记小结:《利用pytthon进行数据分析》之使用pandas和seaborn绘图

matplotlib实际上是一种比较低级的工具。要绘制一张图表&#xff0c;你组装一些基本组件就行&#xff1a;数据展示&#xff08;即图表类型&#xff1a;线型图、柱状图、盒形图、散布图、等值线图等&#xff09;、图例、标题、刻度标签以及其他注解型信息。 在pandas中&#xf…

polarctf靶场[CRYPTO]显而易见的密码、[CRYPTO]夏多的梦、[CRYPTO]再这么说话我揍你了、[CRYPTO]神秘组织M

[CRYPTO]显而易见的密码 考点&#xff1a;ntlm编码 打开文件&#xff0c;显示内容就是ntlm格式 ntlm解密 在线网站&#xff1a; https://www.cmd5.com/便可得到flag [CRYPTO]夏多的梦 根据题目提示可以猜测为夏多密码 考点&#xff1a;夏多密码 在线加密原理网站&#x…

如何使用ssm实现应急资源管理系统

TOC ssm074应急资源管理系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

WEB渗透Win提权篇-RDPFirewall

爆破RDP Hydra爆破RDP >hydra -l admin -P /root/Desktop/passwords -S 192.168.0.0 rdpNlbrute MSF开启 >run post/windows/manage/enable_rdp多用户登陆 Mimikatz设置允许多用户登录 >privilege::debug >ts::multirdprdpwrap GitHub - stascorp/rdpwrap: RD…

用5点结构标定3点结构的顺序

在行列可自由变换的条件下&#xff0c;5点结构有34个 (A,B)---6*30*2---(0,1)(1,0) 让A分别是5a1&#xff0c;2&#xff0c;…&#xff0c;34&#xff0c;让B全是0。当收敛误差为7e-4&#xff0c;收敛199次取迭代次数平均值&#xff0c;得到 迭代次数 搜索难度 1 3683.965 …

上市公司绿色企业识别数据集(2016-2023年)

数据来源&#xff1a;本数据来源于中国债券信息网和企业年报&#xff0c;参考张小可老师等&#xff08;2024&#xff09;做法&#xff0c;根据上市公司是否发行过绿色债券来认定绿色企业的身份。经过对2016-2023年间发行过绿色债券的企业进行人工统计后&#xff0c;共有164家被…

大模型提示词工程和落地思考

本文是一篇内部的个人分享&#xff08;已无敏感信息&#xff09; &#xff0c;目的是增加产品、开发同学对 LLM 的理解&#xff0c;以降低沟通中的阻力&#xff0c;更好推进落地。 以下经脱敏后的原文: 大模型并不神奇 很多人听到’大模型’这个词可能会觉得很神秘&#xff…

Spring Boot 集成 swagger 3.0 指南

Spring Boot 集成 swagger 3.0 指南 一、Swagger介绍1.springfox-swagger 22.SpringFox 3.0.0 发布 二、Spring Boot 集成 swagger 3.01. 添加Maven依赖2. 创建配置类配置Swagger2.1 创建SwaggerConfig 配置类2.1 创建TestInfoConfig信息配置类 3. 在你的Controller上添加swagg…

【深度学习与NLP】——最全环境配置总指南

目录 一、Anaconda 的环境准备 1.下载和安装 1.1. 下载 1.1.1. 官网下载 1.1.2. 镜像站下载&#xff08;官网下载速度慢可选&#xff09; 1.2. 安装 2. 环境配置 2.1 Windows 平台 2.2 MacOS 和 Linux 平台 3. 环境验证 3.1 Windows 平台 3.2 MacOS 和 Linux 平台 …

34集-35集 【完整版小白上手环境搭建】玩转ESP-ADF实现AIGC大模型对话功能-1-《MCU嵌入式AI开发笔记》

34集-35集 【完整版小白上手环境搭建】玩转ESP-ADF实现AIGC大模型对话功能-1-《MCU嵌入式AI开发笔记》 参考文档&#xff1a; 1、ESP32-S3-Korvo-2 V3.0的说明文档&#xff1a; https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/design-guide/d…

浪潮信息AIStation V5:一站式解决大模型挑战

7月9日&#xff0c;浪潮信息在济南“元脑中国行”巡展上隆重发布了AIStation V5升级版人工智能开发平台&#xff0c;该平台凭借全面的大模型流程支持能力&#xff0c;旨在为企业用户简化大模型构建与微调流程&#xff0c;提供标准化、安全可靠的推理服务&#xff0c;并通过优化…

[创业之路-142] :生产 - 产品名称、型号、物料编码、批次、产品结构、BOM单、SN序列号、SOP、版本、回溯等常见概念之间的相互的结构化关系。

目录 一、概念定义 1. 产品型号 2. 批次 3. 产品结构 4. 编码 5. 序列号 6. 版本 7. 物料编码 8. BOM单&#xff08;物料清单&#xff09; 9. 回溯 二、命名规则 2.1 产品型号命名规则 1、基本原则 2、命名要素 3、命名规则示例 4、注意事项 2.2 产品批次命名…

开放式耳机的优缺点?2024五款性能出色产品力荐!

开放式耳机以其独特的设计和使用体验在市场上逐渐受到欢迎。它们的主要优点包括提供舒适的佩戴感受和自然的声音表现&#xff0c;允许外界声音进入&#xff0c;从而在享受音乐的同时保持对周围环境的感知&#xff0c;特别适合户外运动或需要对周围环境保持警觉的场合。此外&…

android studio iguana monitor

android stuido 更新后很多菜单找不到了 其实都在view里面 但是还是没有Monitor 看不到设备的存储 新版本中确实没有 不用找了 Android Device Monitor | Android Studio | Android Developers 用这个 To open the Device Explorer, select View > Tool Windows >…