进程、线程、协程概念

文章类型:算法

发布者:hp

发布时间:2025-05-01

一:类别

(1)进程(Process)

   定义:

           1:是操作系统‌资源分配的基本单位‌,代表一个正在运行的程序实例,

           2:每个进程拥有独立的内存空间(代码、数据、堆栈等)和系统资源(如文件句柄、网络连接)

   特点:

           1:‌隔离性‌:进程之间相互独立,一个进程崩溃不会直接影响其他进程

           2:资源开销大‌:创建、切换进程需要分配独立内存和资源,上下文切换成本高

           3:通信复杂‌:进程间通信(IPC)需通过管道、消息队列、共享内存等机制

   场景:

           浏览器多标签页(每个标签页是独立进程)、运行多个独立的应用程序

       

(2) 线程(Thread)

   定义:线程是进程内的‌执行单元‌,一个进程可以包含多个线程,共享进程的内存和资源

   特点:

           1:‌共享资源‌:线程间可直接读写同一进程的堆、全局变量等,但需要同步机制(如锁)避免竞争

           2:轻量级‌:创建和切换开销比进程小,但仍涉及内核调度和上下文切换

           3:并发性‌:多线程可实现并行(多核CPU)或并发(单核CPU时间片轮转)

   场景:

           Web服务器处理多个请求、图形界面同时响应用户操作和后台计算

(3)协程(Coroutine)

   定义:是‌用户态轻量级线程‌,由程序员显式控制调度,无需操作系统介入,在单线程内实现协作式多任务

   特点:

           1:极低开销‌:协程切换在用户态完成,不涉及内核切换,仅保存少量寄存器状态

           2:‌协作式调度‌:协程主动让出执行权(如通过yield或await),其他协程才能运行

           3:高并发性‌:适合处理大量IO密集型任务(如网络请求),避免线程阻塞

   场景:

           高并发服务器(如Go的goroutine、Python的asyncio)、异步编程模型

二:总结

1:需要强隔离性 → ‌进程‌

2:需共享资源且利用多核 → ‌多线程‌

3:追求高并发和低延迟 → ‌协程‌(结合事件循环或异步IO)