一文理解进程、线程、协程、高并发、同步、异步

进程、线程及协程的区别 一、概念 **进程:**进程是一个具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统资源分配和独立运行的最小单位; **线程:**线程是进程的一个执行单元,是任务调度和系统执行的基本单位; 二、区别 **1、根本区别:**进程是操作系统资源分配和独立运行的最小单位;线程是任务调度和系统执行的最小单位。 **2、地址空间区别:**每个进程都有独立的地址空间,一个进程崩溃不影响其它进程;一个线程组中多个线程共享一个进程的地址空间,一个线程的非法操作会使整个进程崩溃。 **3、上下文切换开销区别:** 阅读详情

一、初始阶段:小餐馆(单进程 + 单线程 + 同步)

你开了一家 10 平米的小餐馆:

  • 整个餐馆就是一个进程(独立的资源容器,有自己的厨房、食材、桌椅);
  • 你既是厨师又是服务员,一个人干所有活(单线程);
  • 处理订单的方式是同步:客人 A 点了一碗面,你必须煮完面、端给 A,才能接客人 B 的订单(做一件事时,其他事完全阻塞)。

这时如果同时来 3 个客人(低并发),后面的客人就得排队等你做完前一个,效率很低,但胜在简单(不用协调多人)。

二、扩张阶段:多厨师(单进程 + 多线程 + 同步 / 异步)

生意好了,你租了更大的店面(还是一个进程,资源共享),雇了 3 个厨师(多线程),每人负责几桌客人:

  • 厨师们共享厨房的锅碗瓢盆(线程共享进程资源);
  • 老板(操作系统)会给厨师分配任务(线程调度),比如客人多的时候,让空闲的厨师接手新订单。

但厨师处理 “耗时菜” 的方式有两种:

  1. 同步处理:厨师 A 做 “老火靓汤”(需 10 分钟),他就守在锅边等,期间啥也不干(线程阻塞),其他客人的订单只能等他汤好。
  2. 异步处理:厨师 A 把汤下锅后,挂个计时器(类似回调),然后去炒其他客人的快菜(非阻塞),计时器响了再回来盛汤。

显然,异步处理能让厨师在 “等待时间” 里多干活,同一时间能接更多订单(提升并发能力)。但问题来了:如果雇 100 个厨师(线程太多),厨房挤不下(内存不够),厨师抢工具(上下文切换),反而乱糟糟(效率下降)。

三、连锁阶段:多分店(多进程 + 多线程)

客人实在太多(高并发),单家店撑不住,你开了 3 家分店(3 个进程):

  • 每家店有自己的厨房、食材(进程资源独立),互不干扰;
  • 每家店各雇 5 个厨师(多线程),用异步方式处理订单。

前台(负载均衡)会把客人分到不同分店,比如 100 桌客人分给 3 家店,每家处理 30 多桌。

  • 好处:一家店着火(进程崩溃),另外两家还能正常营业(隔离性好);
  • 坏处:分店之间调食材很麻烦(进程间通信成本高),比如 A 店缺酱油,得通过总部(类似管道 / Socket)协调,不如单店内部拿方便。

四、极致优化:超级厨师(单线程 + 协程 + 异步)

连锁模式虽然稳定,但成本高(多进程资源占用大)。你发现客人点的菜里,80% 是 “快炒”(CPU 密集),20% 是 “炖汤”(IO 密集,等待时间长)。于是你训练出一批 “超级厨师”(协程):

  • 每个超级厨师(线程)手里有 100 个 “任务清单”(协程),同时处理 100 桌客人的订单;
  • 超级厨师自己决定任务顺序(用户态调度):给 A 桌炖汤后,不等待,立刻转去给 B 桌切菜,切完再给 C 桌炒菜…… 全程自己安排,不用老板(操作系统)插手(协程切换成本极低);
  • 所有清单共享厨师的工具(协程共享线程资源),但每个清单有自己的小本本(协程私有栈)。

比如 1 个超级厨师(线程)用协程能同时处理 100 桌客人,而传统厨师(线程)只能处理 1 桌。3 个超级厨师就能轻松应对 300 桌客人(高并发),且成本极低(内存占用仅相当于 3 个线程)。

五、高并发下的终极协作

当遇到 “春节聚餐潮”(极端高并发,500 桌客人),你需要组合所有机制:

  1. 开 2 家分店(2 个进程),隔离风险;
  2. 每家店配 2 个超级厨师(2 个线程);
  3. 每个超级厨师带 150 个任务清单(150 个协程),用异步方式处理订单(等待炖汤时干别的);
  4. 前台发号(消息队列),客人按号入座(削峰),实在忙不过来就暂时停售炖汤(降级)。

最终,用最低的成本(2 进程 + 4 线程 + 600 协程)扛住了 500 桌客人的高并发,客人不用长时间排队,厨师也没闲着 —— 这就是所有机制协作的价值。

总结:所有概念的关联

  • 进程是 “独立分店”:资源隔离,抗风险但成本高;
  • 线程是 “普通厨师”:共享资源,能并行干活,但数量多了效率下降;
  • 协程是 “超级厨师的任务清单”:极致轻量,用户自己调度,单线程能扛海量任务;
  • 同步 / 异步是 “干活方式”:同步是 “等完再干”(低效),异步是 “边等边干”(高效);
  • 高并发是 “客流高峰”:需要通过 “多进程分流 + 多线程并行 + 协程提效 + 异步减等待” 组合应对,最终实现 “客人满意,成本可控”。

简单说:进程是 “安全区”,线程是 “干活的人”,协程是 “人的高效分身”,同步异步是 “干活的节奏”,高并发是 “必须同时干很多活的场景”—— 它们从不同层面解决 “多任务处理” 的问题,共同支撑系统在压力下高效运转。

python协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势 python多线程:协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势 阅读详情

相关推荐

同步与异步、并发与并行、线程与协程、进程:全面解析

本文全面解析了现代编程中的关键概念:同步与异步、并发与并行、线程与协程、进程的区别与联系。同步任务按顺序执行,异步则可并发执行;并发是任务交替执行,并行是物理同时执行;线程由OS调度,协程由用户控制;进程独立性强但开销大。文章详细介绍了Python中的实现方式(asyncio、threading、multiprocessing),对比了各种技术的优缺点,并提供了实际场景选择建议:I/O密集型推荐asyncio,CPU密集型推荐多进程,高并发网络服务建议协程+线程池。掌握这些概念有助于编写高效稳定的程序。

guoguozgw的博客 1331

线程,进程,协程, 并发,并行,同步,异步概念解析

我相信线程,进程,协程, 并发,并行,同步,异步这几个概念大家在编程过程中肯定会遇到,但是偏偏这几个概念又那么类似,很容易让人模糊,今天我就用这一篇文章来和大家梳理一下这几个概念。

开源探索者 7145

Mac用户必看:PD虚拟机网络初始化失败的3分钟修复指南(附详细截图)

本文针对Mac用户在Parallels Desktop(PD虚拟机)启动时遇到的“网络初始化失败”问题,提供了快速诊断与修复指南。核心原因是macOS系统更新后权限未正确授予。文章通过详细的三步修复法(关闭进程、修改配置文件、重新授权重启),帮助用户在3分钟内恢复虚拟机网络连接,并附有排查清单与预防建议。

weixin_29231027的博客 538

关于进程、线程、协程、同步、异步、阻塞、非阻塞、并发、并行、串行的理解

二、线程 三、协程 七、非阻塞 八、并发 九、并行 十、串行

python全栈 1207

以LAN8720A为例的以太网硬件设计方案

输入时钟(XTAL1/CLKIN,XTAL2):推荐外加25MHz(性价比较高)晶振为PHY芯片提供时钟,PHY芯片内部PLL将其倍频为50MHz来使用,亦可使用直接使用50MHz晶振。三位MODE通过高低电平组合分别对应以上8种模式 ,包含10M半双工,10M全双工,100M半双工,100M全双工,是否启用自协商协议,CRS是否有效等。VDDCR:1.2V电源,可由芯片内部稳压电源提供,亦可由外部电源提供,由外部电源提供可降低芯片功耗。REF_CLK:参考时钟,由MAC或外部时钟晶振向PHY芯片提供。

weixin_46154042的博客 5884

Kaggle时间序列竞赛金牌方案解析与实战指南

本文深度解析了Kaggle时间序列竞赛的金牌方案,揭示了其成功不仅依赖先进模型,更在于系统工程思维。文章系统阐述了从数据理解、特征工程到模型集成与后处理的全流程,并重点剖析了分层建模、自定义损失函数、时序交叉验证等核心技巧,为参赛者提供了从理论到实战的完整指南。

weixin_29196315的博客 356

python协程系列(四)——同步/异步、并发/并行、线程/进程

声明:后面会不断穿插这样的一些概念,一定要深入理解一些关键的基本思想。这些基本概念很多的参考资料参差不齐,讲解不是很清楚,本章将详细,用最通俗易懂的语言解释,什么是线程、进程、同步、异步、阻塞、非阻塞、并发、并行这些很容易弄混的概念,本次的系列文章较长,后续会讲解python协程的实现方式。看完本文,你讲明白一下一些基本的东西: (1)并发(并发只是实现异步的手段之一)并不是没有阻塞的,...

MIss-Y的博客 7226

单节锂电池充电管理芯片应用原理阐述及应用领域

当电池电压超过2.9V时,采用恒流模式对电池充电,充电电流由PROG 管脚和GND之间的电阻RPROG确定。充电电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置当充电电流在达到最终浮充电压之后降至设定值1/10时,WD4054将自动终止充电循环。在待机模式中,WD4054 对 BAT 引脚电压进行监控,只有当 BAT 引脚电压低于再充电阈值电压4.1V时(对应电池容量80%~90%),才会开始新的充电循环,重新对电池进行充电,这就避免了对电池进行不必要的反复充电,有效延长电池的使用寿命。

weixin_41141180的博客 945

一文理解后端核心概念:同步/异步、阻塞/非阻塞、进程/线程/协程

本文系统梳理了后端开发中的核心概念:同步 / 异步、阻塞 / 非阻塞、进程 / 线程 / 协程、并发 / 并行,并介绍了异步编程的回调与事件循环实现机制及不同场景下的技术选型。

分享一些嵌入式Linux学习笔记和工具使用 1274

PX4实战指南:通过遥控器通道映射实现多舵机PWM精准控制

本文详细介绍了通过PX4飞控的AUX PWM接口实现遥控器通道映射控制多舵机的实战指南。内容包括硬件选型与连接、软件参数配置、通道映射方法以及常见问题排查,帮助开发者精准实现无人机舵机PWM控制,适用于云台、机械臂等扩展功能开发。

ee345的博客 304

Android TV开发:RecyclerView焦点控制实践与优化

在Android TV应用开发中,焦点控制是提升用户体验的关键技术。不同于移动端触摸交互,TV端通过遥控器方向键导航,需要精确的焦点管理机制。RecyclerView作为动态列表的核心组件,其焦点控制涉及视图复用、导航逻辑和视觉反馈等核心技术点。通过合理配置focusable属性、自定义焦点查找算法以及优化动画性能,开发者可以解决TV端常见的焦点跳转异常、视觉反馈延迟等问题。特别是在视频点播、智能家居控制等场景中,良好的焦点控制能显著提升操作效率。本文结合网格布局焦点环绕、分页加载焦点保持等实战案例,深入解

weixin_34195142的博客 469

进程、线程、协程分别是什么概念?

理解这些并发单元的差异,有助于设计出更高效、更稳定的系统架构。实际开发中,通常需要根据业务场景混合使用这些技术。测试环境:Intel i7-11800H @ 2.3GHz。resume(恢复执行)yield(主动让出)

weixin_40682342的博客 1894

在LinuxMint 22.1(Ubuntu24.04)上安装使用同花顺远航版

Linux用户成功在LinuxMint22.1系统上通过Wine9.0运行同花顺远航版,解决了长期困扰的股票行情软件问题。此前Linux原生版同花顺功能简陋且停止更新,Wine版通达信存在显示问题。作者作为自由软件支持者,通过调整Wine配置文件解决了高分屏显示异常问题,实现了远航版的正常使用。期待同花顺能重启Linux原生版开发,支持更多处理器架构,完善国产软件生态。该方案为Linux股票软件用户提供了实用参考。

5135

进程、线程和协程(基础篇)

目录系和区别​编辑串行、并发和并行同步和异步、阻塞和非阻塞同步和异步阻塞和非阻塞同步/异步与阻塞/非阻塞怎么理解呢总结我们在开发高并发和高可用的程序的时候,我们都不可能只启动一个进程或者一个线程,我们都会使用多进程,多线程或者协程等这些知识点。那么什么是进程,什么是线程,什么是协程?以其他们是什么样的关系?使用他们需要知道那些知识呢?我们在这里和大家......

sanylove的博客 2945

QT+OSG/osgEarth编译之七十六:gltf+Qt编译(一套代码、一套框架,跨平台编译,版本:osgEarth-3.3插件库osgdb_gltf)

通过一套gltf代码和框架,实现osgdb_gltf跨平台编译。 在Qt环境下,集成头文件、库文件,构建跨平台编译的pro文件。 通过构建的一套配置工程,基于Qt Creator IDE,完成跨平台的编译实践。 在Windows、Linux、MacOS等操作系统上进行测试,成功编译,形成的成果(头文件、库文件等)可在不同系统下调用或使用,从而更好地构建跨平台解决方案。 采用的是osgEarth3.3版本。 读者可参考博客中的集成原理,构建不同版本的osgdb_gltf跨平台包。

LuckyHanMo的博客 1802

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

进程、线程、协程是什么(以协程为主)

同步模型。

qq_64148519的博客 841

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

理解:进程、线程、协程

进程是操作系统分配资源的基本单位,表示一个正在执行的程序。一旦一个程序被加载到内存中,它就成为一个进程,而每个进程都有其独立的内存空间。线程是进程内部的一个执行单元,同一进程内的多个线程共享进程的内存和资源。线程的引入是为了提高程序的并发性和执行效率。协程是一种更轻量级的用户级线程,通过程序员控制协程的执行顺序和上下文切换。协程通常在单线程中执行,通过挂起和恢复来实现并发。进程:拥有独立的资源和内存空间,开销大,安全性高。线程:轻量级的执行单位,能共享资源,但需要注意线程安全。

Yu_LOVEC的博客 1955

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【白话计算机基础】并发与并行,进程、线程与协程, 同步与异步,阻塞与非阻塞...

作者|Subranium学校 | 东北大学研究| 城市计算出品 | AI蜗牛车一、引言相信线程,进程,协程, 并发,并行,同步,异步,阻塞和非阻塞这几个概念大家在编程过程中肯定会遇...

AI蜗牛车 2537

进程,线程和协程的区别

进程,线程和协程的区别一. 概念二. 区别三. 进程和线程、协程在python中的使用四. 一个形象的例子解释进程和线程的区别 现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,py web框架tornado中也用了gevent封装好的协程。本文主要介绍进程、线程和协程三者之间的区别。 一. 概念 1. 进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进

海里鱼的技术博客 2021

同步,异步,进程线程概念

本章信息量较大,请慎读!!! 内容包括:(线程,主线程,进程,队列,回调函数,线程池)概念为铺垫,掌握 异步,同步 一、线程和进程基本概念 进程:操作系统分配的占有CPU资源的最小单位。拥有独立的地址空间。进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。 线程:安排CPU执行的最小单位。同一个进程下的所有线程,共享进程的...

qq_28835447的博客 3477

进程,协程,线程,同步,异步,阻塞,非阻塞,流量削锋(简单理解)

1.什么是进程,线程,协程 进程是一个"执行中的程序" 线程: 由于用户的并发请求,为每一个请求都创建一个进程显然是行不通的,从系统资源开销方面或者是响应用户请求的效率方面来看。因此操作系统中线程的概率便被引入了 线程,有时被称为轻量级进程,是程序执行流的最小单元 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行...

cangqiong_xiamen的博客 469

深入理解进程、线程与协程

进程是操作系统进行资源分配和调度的基本单位,是程序在计算机上的一次执行活动。当你双击打开一个应用程序时,操作系统就会创建一个进程。线程是进程中的一个执行单元,是CPU调度的基本单位。一个进程可以包含多个线程,它们共享进程的资源。协程是一种用户态的轻量级线程,由程序自己控制调度,而不是由操作系统内核调度。协程可以在执行过程中暂停,并在稍后恢复执行。进程是资源分配的基本单位,提供完整的隔离和独立性线程是 CPU 调度的基本单位,轻量级但需要处理同步问题协程。

m0_59029415的博客 973

切面是异步还是同步操作‘_线程,进程,协程, 并发,并行,同步,异步概念解析...

我相信线程,进程,协程, 并发,并行,同步,异步这几个概念大家在编程过程中肯定会遇到,但是偏偏这几个概念又那么类似,很容易让人模糊,今天我就用这一篇文章来和大家梳理一下这几个概念。1. 同步与异步当我们 同步 的执行某个任务时,我们需要等到这个任务执行完给我们反馈结果,我们才能去执行其他的任务。但是 异步 的执行某个任务时,我们可以不用等这个任务结束就去执行另一项任务。就像常用到的异步刷新操作。通...

weixin_39811842的博客 552

对进程,线程,协程,管程,纤程的理解

对进程,线程,协程,管程,纤程的理解进程线程协程管程纤程 进程 进程的定义: 狭义定义:进程就是程序的执行过程。、 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 操作系统引入进程的概念的原因: 从理论角度看,是对正在运行的程序过程的抽象; 从实现角度看,是一种数据结构,目的在于清晰...

BIackMamba的博客 2945

协程,线程,进程等概念理解

协程 在操作系统(os)级别,有进程(process)和线程(thread)两个我们看不到但又实际存在的“东西”,这两个东西都是用来模拟“并行”的,写操作系统的程序员通过用一定的策略给不同的进程和线程分配CPU计算资源,来让用户“以为”几个不同的事情在“同时”进行“。在单CPU上,是os代码强制把一个进程或者线程挂起,换成另外一个来计算,所以,实际上是串行的,只是“概念上的并行”。在现在的多核的cpu上,线程可能是“真正并行的”。 线程,同一时间可以同时执行多个线程。开辟多条线程开销很大。线程适合多任务同

KindSuper_liu的专栏 2593

一文入门python中的进程、线程和协程

如果任务没有在 5 秒内完成,就可以停止该任务,并向用户报告:该任务花费了太长时间,我们正在停止它。例如,我们可能想通知用户:某任务花费的时间比预期的要长,但即便超过了规定的超时时间,也不取消该任务。由于 CPU 和 IO 速度差异巨大,任务在执行过程中大部分时间都在等待 IO,如果仍然使用单进程单线程模型,其他任务就无法并行执行。相反,它创建了一个可以稍后执行的协程对象,要执行协程,需要在事件循环中显式执行它。当一个暂停的协程正在等待操作完成时,可运行其他代码,等待时其他代码的运行是应用程序并发的原因。

julac的博客 957
上一篇: go经验总结
下一篇: 第一章 Agent的基本理解
摆正思想
博客等级 码龄8年 16粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值