进程、线程、协程概念
文章类型:算法
发布者:hp
发布时间:2025-05-01
定义:
1:是操作系统资源分配的基本单位,代表一个正在运行的程序实例,
2:每个进程拥有独立的内存空间(代码、数据、堆栈等)和系统资源(如文件句柄、网络连接)
特点:
1:隔离性:进程之间相互独立,一个进程崩溃不会直接影响其他进程
2:资源开销大:创建、切换进程需要分配独立内存和资源,上下文切换成本高
3:通信复杂:进程间通信(IPC)需通过管道、消息队列、共享内存等机制
场景:
浏览器多标签页(每个标签页是独立进程)、运行多个独立的应用程序
定义:线程是进程内的执行单元,一个进程可以包含多个线程,共享进程的内存和资源
特点:
1:共享资源:线程间可直接读写同一进程的堆、全局变量等,但需要同步机制(如锁)避免竞争
2:轻量级:创建和切换开销比进程小,但仍涉及内核调度和上下文切换
3:并发性:多线程可实现并行(多核CPU)或并发(单核CPU时间片轮转)
场景:
Web服务器处理多个请求、图形界面同时响应用户操作和后台计算
定义:是用户态轻量级线程,由程序员显式控制调度,无需操作系统介入,在单线程内实现协作式多任务
特点:
1:极低开销:协程切换在用户态完成,不涉及内核切换,仅保存少量寄存器状态
2:协作式调度:协程主动让出执行权(如通过yield或await),其他协程才能运行
3:高并发性:适合处理大量IO密集型任务(如网络请求),避免线程阻塞
场景:
高并发服务器(如Go的goroutine、Python的asyncio)、异步编程模型
1:需要强隔离性 → 进程
2:需共享资源且利用多核 → 多线程
3:追求高并发和低延迟 → 协程(结合事件循环或异步IO)