程序、进程、线程、协程结构图
创作时间:
作者:
@小白创作中心
程序、进程、线程、协程结构图
引用
CSDN
1.
https://blog.csdn.net/Lzy1154119938/article/details/139303361
程序、进程、线程和协程
程序(Program)
- 指的是编写好的源代码文件或者可执行文件
- 是静态的,存储在磁盘上
进程(Process)
- 是程序执行的一个实例
- 拥有自己的地址空间、资源、状态等
- 是系统分配资源的基本单位
- 可以独立运行、调度和管理
- 进程之间相互独立,需要通过进程间通信(IPC)进行交互
进程的特点
- 独立性:每个进程都有自己的地址空间和资源
- 隔离性:进程之间相互隔离,不会相互影响
- 并发性:多个进程可以同时执行
- 可抢占性:操作系统可以暂停当前进程并切换到其他进程
线程(Thread)
- 是进程内的一个执行单元
- 共享进程的地址空间和资源
- 是系统调度的基本单位
- 线程之间共享相同的上下文和全局变量
- 可以提高程序的并发性和响应性
线程的特点
- 共享性:线程共享进程的资源和地址空间
- 并发性:多个线程可以同时执行
- 高效性:创建和销毁线程比进程开销小
- 有限性:受限于进程的地址空间和资源
协程(Coroutine)
- 是一种轻量级的线程
- 在用户空间中实现,不依赖于操作系统的线程调度
- 可以暂停和恢复执行
- 协程之间可以相互切换,但不是被操作系统调度,而是由程序自身控制
协程的特点
- 用户空间实现:不依赖于操作系统的线程调度
- 轻量级:协程的创建和切换开销小
- 灵活性:可以在程序中自由切换和调度
- 适用性:适用于IO密集型任务和高并发场景
程序、进程、线程和协程作为最小单元关系的结构图
在这个结构图中:
- 程序是编写好的源代码文件或者可执行文件,是静态的。
- 进程是程序执行的一个实例,拥有自己的地址空间、资源等。
- 进程内包含多个线程,线程共享进程的地址空间和资源。
- 线程是进程内的一个执行单元,是系统调度的基本单位。
- 线程内包含多个协程,协程是一种轻量级的线程,可以在用户空间中实现,不依赖于操作系统的线程调度。
总结
- 线程是进程的最小执行单元,一个进程可以包含多个线程,它们共享进程的地址空间和资源,是操作系统调度的基本单位。
- 协程是轻量级的线程,是线程的最小执行单元,它在用户空间中实现,不依赖于操作系统的线程调度。协程之间可以自由切换,但不会被操作系统调度,而是由程序自身控制。
这种区分可以帮助我们理解它们在并发编程中的不同作用和特点。
进程、线程和协程之间的通信方式
进程之间通信(Inter-Process Communication, IPC)
- 管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动。通常用于具有亲缘关系的进程之间的通信。
- 命名管道(Named Pipe):命名管道是一种有名字的FIFO文件,允许无关的进程之间进行通信。
- 消息队列(Message Queue):消息队列是一个消息链表,允许一个或多个进程通过消息进行通信,消息可以是结构体等复杂数据类型。
- 信号量(Semaphore):信号量是一种计数器,用于控制对共享资源的访问,允许多个进程之间进行同步和互斥操作。
- 共享内存(Shared Memory):共享内存是一块被多个进程共享的内存区域,允许多个进程之间直接读写共享的数据,需要配合信号量等进行同步。
- 套接字(Socket):套接字是一种基于网络的通信方式,允许不同主机上的进程进行通信。
线程之间通信(Inter-Thread Communication)
- 锁机制(Lock):线程通过互斥锁(Mutex)或读写锁(ReadWrite Lock)来保护共享资源的访问,只有拥有锁的线程才能访问共享资源。
- 条件变量(Condition Variable):线程通过条件变量来实现线程之间的等待和唤醒,允许线程在特定条件下等待或被唤醒。
- 信号量(Semaphore):信号量也可以用于线程之间的同步和互斥操作,允许多个线程之间进行同步。
- 屏障(Barrier):屏障允许一组线程在某个点上进行同步,当所有线程都达到该点后才能继续执行。
- 消息队列(Message Queue):一些线程库提供了消息队列的实现,允许线程之间通过消息进行通信。
协程之间通信
协程之间通信相对较为简单,通常通过共享全局变量来实现。由于协程在用户空间中运行,不涉及系统调度,因此不需要像进程或线程那样复杂的同步机制。协程通常在同一个线程内运行,它们共享该线程的内存空间,因此可以直接访问和修改全局变量。
热门推荐
麦肯锡矩阵指南,助力企业决策的关键方法!
购买铁路车票时看到的“静”“兑”“铺”是什么含义?
常绿藤本攀爬植物:种类、栽培与应用
零实习经验如何突破大数据开发岗?
大型强子对撞机揭示反物质能在银河系中走多远
变相辞退证据收集:劳动争议中的维权关键
儿童健康智能机器人的创新与应用
开源软件定义及其法律风险指南
开源协议的法律约束有多强
与领导一起坐车,自己坐副驾还是领导坐?别让领导觉得你不懂礼数
含马兜铃酸的中药有哪些?使用时需谨慎
韵母是an的字有哪些,探秘韵母“an”的汉字世界
宇宙沙盘:自由创造与探索的宇宙模拟游戏
【中醫傷科】皮下腫瘤嚇死人?帶你認識腱鞘囊腫的治療及預防!
虾有哪些做法?虾界盛宴!解锁九大虾料理,让您吃出新天地!
海鲜季:点评虾的几种吃法
宇树机器狗Unitree Go1开发指南1:安装Unitree工具包
如何识别假冒客服的电话?
如何在购房时做出合适的决策?这种决策怎样符合自身实际情况?
描写放风筝好词好句摘抄
酸碱废水处理的方法有哪些
绿房子、沪江大学近代建筑等入选中国20世纪建筑遗产
老子文化遗迹遍及甘肃 吸引海内外游客打卡“悟道”
《人民日报》:广西能源集团谱写风电高质量发展新篇章
青岛市生育保险报销条件详解:从基本要求到特殊情况处理
离婚是不是有30天冷静期?一文详解离婚冷静期、责任归属与异地办理条件
如何在时间安排紧凑的情况下依然高效完成任务?
学会「系统思维」,像查理·芒格一样思考
兰花浇水:可以直接从上面浇吗?
朱柏庐:明代著名文学家与思想家的生平简介