并发,并行与异步

我发现一个普遍的困惑点浮现出来,其根源在于混淆了“并发”、“并行”与“异步”,特别是下意识地将异步等同于利用多核CPU进行并行处理。

为了彻底澄清这些基础但至关重要的概念,我们深入剖析理论原则并且同时抛开我们日常使用的现代框架(如.NET)中的具体实现(这往往会误导),以辨析并发(Concurrency)、并行(parallel)和异步(Asynchronous)这三个核心概念。

核心概念解析

什么是并发(Concurrency)?

  • 定义: 并发是指一个系统有能力在一段时间内处理多个任务。这些任务的执行在宏观上是重叠的,但在微观上是通过任务的交替执行实现的。

  • 精髓: Go语言之父 Rob Pike 对此有非常精辟的论述:“Concurrency is about dealing with lots of things at once.”(并发是关于处理多件事情的能力)。这里的关键词是“dealing with”(处理),它强调的是一种程序结构,使其能够应对和管理多个任务流。

  • 举例说明: 一个餐厅突然来了三个客人,但餐厅只有一个服务员。从服务员的角度来看,他需要同时服务这些客人。当然这是宏观上的同时,因为服务员执行事件的速度是在是太慢了。

什么是并行(parallel)?

  • 定义: 并行是指系统能够在同一物理时刻真正地同时执行多个任务。

  • 前提: 并行必须依赖于多核CPU。在多核处理器上,每个核心可以在完全相同的时刻独立地执行一个不同的任务指令,实现物理意义上的“同时”。

  • 精髓: 同样引用 Rob Pike 的论述进行对比:“parallel is about doing lots of things at once.”(并行是关于完成多件事情的能力)。这里的关键词是“doing”(完成),强调的是物理上的同时执行,是真正意义上的“一起做”。

  • 举例: 还是餐厅的例子,一个餐厅突然来了三个客人,餐厅这次有3个服务员,每个服务员正好服务一位客人。这就是并行。

什么是异步(Asynchronous)?

  • 定义: 异步是一种编程模型或模式,其核心思想是非阻塞(Non-blocking)。它描述的是一种调用行为,尤其在处理耗时的I/O操作时(如网络请求、数据库查询、文件读写)显得至关重要。

  • 机制: 当一个线程发起一个异步I/O操作时(例如,在.NET中调用 await client.GetStringAsync(...)),它并不会原地阻塞等待。实际发生的过程是:

  1. 该线程向操作系统发出I/O请求,然后立即返回。

  2. 这个宝贵的线程被释放回线程池,可以立即去处理其他的工作,比如响应另一个用户的请求。CPU完全没有被闲置。

  3. I/O操作由硬件(如网卡、磁盘控制器)独立完成。

  4. 当操作完成后,硬件会向CPU发送一个中断信号。

  5. 操作系统捕获这个中断,并将一个完成事件排入队列。

  6. 线程池中的某个可用线程会取出这个事件,并从之前 await 的地方继续执行后续代码。

  • 目的: 异步的主要目标是避免在等待I/O密集型操作时浪费昂贵的线程资源,从而用少量的线程实现极高的系统吞吐量和可伸缩性(例如,处理成千上万的并发网络连接)。它关注的是调用方的线程是否被阻塞,而非任务是否在多核上同时运行。

  • 误区澄清: “Asynchronous is not Concurrency.”(异步不是并发)。这是一个极其重要的区分。异步是一种允许代码以非线性(多任务角度)顺序正确执行的属性,它能够用来实现并发,但其本身并非并发。异步可以在单线程上实现(一个线程发起请求后去做别的事),而并行则必须是多个线程在多个CPU核心上同时执行。

  • 举例: 还是餐厅的例子,一个餐厅同时来了三个客人,三个服务员每人一个客人。服务员在下完单后有两个选择:

  1. 同步:在后厨门口傻等,直到出餐后送到客人桌上。

  2. 异步:下单后马上去接待其他客人或者处理其他事情,等后厨对讲机里通知菜烧好了才去取餐送餐。

!!!这里请大家注意 !!!:

异步模型我们强调的是这个服务员被释放出来了,他更加灵活的调度,他可以做更多的事来提高餐厅的运行效率。至于后厨做菜这件事是一个厨师来做,还是十个厨师来做那是如何更快的做菜的问题。这跟异步还是同步没有关系。同步模式下做菜这件事也可以请十个厨师来做而加快出餐的速度。

三者的关系与区别

为了更直观地理解它们,我们可以通过一个表格来对比:

总结

总而言之,并发、并行和异步是从不同维度描述任务执行方式的概念。并发是一种程序设计结构,使其能够逻辑上处理多个任务;并行是利用硬件(多核CPU)在物理上同时执行多个任务的计算能力;而异步是一种编程范式,通过非阻塞IO调用来极致地提高系统资源的利用率。

文章转载自:Agile.Zhou

原文链接:https://www.cnblogs.com/kklldog/p/19474533

体验地址:http://www.jnpfsoft.com/?from=001YH

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

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

相关文章

亲测好用8个AI论文写作软件,本科生搞定毕业论文!

亲测好用8个AI论文写作软件,本科生搞定毕业论文! AI 工具如何成为论文写作的得力助手 随着人工智能技术的不断发展,越来越多的大学生开始借助 AI 工具来辅助论文写作。尤其是在面对复杂的学术任务时,这些工具不仅能够帮助学生节…

VisionPro二开之图表显示

VisionPro二开之图表显示lb_OKNum lb_NGNum lb_AllNum btn_Refresh

亲测Qwen3-VL-2B-Instruct:AI视觉代理实战效果惊艳

亲测Qwen3-VL-2B-Instruct:AI视觉代理实战效果惊艳 1. 模型概述与核心能力 Qwen3-VL-2B-Instruct是阿里通义千问系列中最新推出的轻量级多模态大模型,专为高效部署和实时交互设计。尽管参数规模为20亿,但其在视觉理解、语言生成和跨模态推理…

AI+虚仿 智慧教育引领淡水渔业智慧养殖专业新双高建设

随着新一轮科技革命与产业变革的深入发展,智慧教育、人工智能(AI)、虚拟仿真(虚仿)等技术正深刻重塑职业教育生态。《关于推动现代职业教育高质量发展的意见》《关于深化现代职业教育体系建设改革的意见》等政策明确要…

leetcode 3453. 分割正方形 I 中等

给你一个二维整数数组 squares ,其中 squares[i] [xi, yi, li] 表示一个与 x 轴平行的正方形的左下角坐标和正方形的边长。找到一个最小的 y 坐标,它对应一条水平线,该线需要满足它以上正方形的总面积 等于 该线以下正方形的总面积。答案如果…

n8n供应链攻击滥用社区节点窃取OAuth令牌

安全研究人员发现威胁行为者在npm注册表上传了八个伪装成n8n工作流自动化平台集成组件的恶意软件包,旨在窃取开发者的OAuth凭证。其中名为"n8n-nodes-hfgjf-irtuinvcm-lasdqewriit"的软件包仿冒Google Ads集成组件,通过看似合法的表单诱导用户…

omni.audio2face.exporter.scripts.livelinksender] Socket not connected: localhost, 12030

omni.audio2face.exporter.scripts.livelinksender] Socket not connected: localhost, 12030ue的live link 连接上了以后,又自己好了。

计算机毕设java学生竞赛资料网的设计与实现 基于Java的学生竞赛信息管理平台的设计与开发 Java环境下学生竞赛资料管理系统的构建与实现

计算机毕设java学生竞赛资料网的设计与实现4i3959 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的飞速发展,学生竞赛资料管理逐渐从传统的纸质化转向…

利用零宽度字符的隐形JavaScript混淆工具InvisibleJS浮出水面

InvisibleJS是一款利用不可见零宽度Unicode字符隐藏JavaScript代码的新型开源工具,其潜在恶意用途已引发安全警报。该工具由开发者oscarmine托管在GitHub上,采用隐写术技术将源代码嵌入看似空白的文件中。工作原理该工具将JavaScript转换为二进制字符串&…

[实战] 阿里云 Linux 3 安装 GitLab Runner 全踩坑记录:解决 Repo 404 及 SSH 模式报错,最终 Shell 模式完美运行

前言最近在阿里云服务器(Alibaba Cloud Linux 3)上部署 GitLab Runner,本以为是很简单的 yum install 和 register,结果踩了一路的坑:从 yum 源 404,到新版 Token 注册参数报错,再到 SSH 模式的…

计算机毕设java学生宿舍管理系统 基于Java的高校学生宿舍智能管理系统设计与实现 Java技术驱动的学生宿舍综合管理平台开发

计算机毕设java学生宿舍管理系统xh09a9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着高校规模的不断扩大和学生人数的持续增长,传统的学生宿舍管理方式面临着诸…

vm的桥接模式理解

一、VMware 的三种网络模式(通俗解释) 1. 桥接模式(Bridged) 类比: 你家路由器下面接了两个设备: 你的电脑 你的手机 它们都能直接互相访问,也能上网。 桥接模式就是: 虚拟机 你局域…

动态高斯模糊技术揭秘:AI人脸隐私卫士参数详解

动态高斯模糊技术揭秘:AI人脸隐私卫士参数详解 1. 技术背景与核心挑战 在数字影像日益普及的今天,人脸隐私泄露已成为公众关注的核心问题。无论是社交媒体分享、监控系统存档,还是企业内部文档流转,未经脱敏的人脸信息都可能被滥…

1.2.2 国内主流AI模型深度测评:通义千问、文心一言、讯飞星火全面对比

1.2.2 国内主流AI模型深度测评:通义千问、文心一言、讯飞星火全面对比 引言 在上一节(1.2.1)中,我们深入了解了三大国际主流AI模型。但对于国内用户来说,国产AI模型在中文理解、网络访问、性价比等方面具有独特优势。本节将全面测评三大国产主流AI模型:通义千问、文心一…

YY/T 0681.15-2019:守护无菌医疗器械yyt0618.15-2019运输安全的核心准则

对于无菌医疗器械而言,质量安全的保障不仅取决于生产制造环节,更贯穿于从工厂到医疗机构的全流通链路。运输过程中的颠簸、跌落、气压变化等环境应力,都可能破坏包装完整性,进而影响产品无菌性,给患者安全带来隐患。YY…

技术流速通:低代码破局固资管理“黑箱”,从架构到落地全拆解

作为IT技术人,你大概率经历过这样的场景:年底资产盘点时,财务拿着Excel台账追着你核对设备信息,生产部门抱怨设备维修记录混乱导致停机损失,行政吐槽资产调拨流程繁琐效率低下。固定资产管理,这个横跨财务、…

2026年TOP3最佳EOR名义雇主服务优势排行榜,让企业更高效应对国际化挑战

2026年,EOR名义雇主服务成为企业应对国际化挑战的重要工具。这类服务帮助企业在不同国家合法雇佣员工,简化了繁琐的合规流程。通过外包人力资源管理,企业能迅速适应当地法律法规,避免法律风险。同时,这些服务提升了运营…

1.2.4 AI模型选择指南:如何找到最适合你的模型

1.2.4 AI模型选择指南:如何找到最适合你的模型 引言 在前三节中,我们深入了解了8大主流AI模型的特点和优势。但了解模型只是第一步,更重要的是如何根据你的具体需求,选择最适合的模型。本节将为你提供一套完整的模型选择方法论,包括综合对比、实战测试、决策树和组合策略…

GBT4857.22标准深度解析,揭秘物流运输中gbt4857.22稳定守护者

当我们收到跨越千山万水的快递包裹时,很少有人会思考:这些包裹如何在颠簸、堆叠、搬运的复杂物流环境中保持完好?其实,这背后离不开一系列国家标准的保驾护航,GBT4857.22《包装 运输包装件 单元货物稳定性试验方法》就…

YY/T 0681.15:无菌医疗器械yyt0681.15运输包装的安全守护指南

对于无菌医疗器械而言,从生产车间到临床使用终端,运输环节的包装保护是保障产品无菌性与完整性的最后一道防线。如果运输过程中包装破损、密封失效,不仅会导致产品报废,更可能给患者安全带来潜在风险。YY/T 0681.15-2019《无菌医疗…